Home Assistant speichert nur begrenzt wenige Daten in dem Langzeitspeicher. Möchte man die Werte über einen langen Zeitraum behalten, empfiehlt sich eine zusätzliche Datenbank wie InfluxDB. Da die App InfluxDB von Home Assistant eingestellt wurde (nicht die Integration, sondern der komplette Container mit InfluxDB), habe ich nach Alternativen gesucht, die mit wenig Ressourcen laufen können. Und habe VictoriaMetrics gefunden.
Docker Container einrichten
Mit folgender docker-compose.yml kann man einen Docker-Container mit VictoriaMetrics und Grafana starten:
1services:
2 victoriametrics:
3 image: victoriametrics/victoria-metrics:latest
4 container_name: victoriametrics
5 ports:
6 - "8428:8428"
7 volumes:
8 - vmdata:/storage
9 command:
10 - "-storageDataPath=/storage"
11 - "-retentionPeriod=24M"
12 restart: always
13
14 grafana:
15 image: grafana/grafana:latest
16 container_name: grafana
17 ports:
18 - "3000:3000"
19 volumes:
20 - grafanadata:/var/lib/grafana
21 restart: always
22 depends_on:
23 - "victoriametrics"
24 environment:
25 - GF_SECURITY_ADMIN_PASSWORD=admin
26 - GF_SECURITY_ADMIN_USER=admin
27
28volumes:
29 vmdata:
30 grafanadata:
Danach muss man in Grafana eine neue Verbindung vom Typ "Prometheus" unter Connections > Data Sources anlegen. Als Adresse die IP des Containers mit der Portnummer 8428 (also die Portnummer aus der Docker Compose).
Verbindung in Home Assistant einrichten
Zuletzt noch in Home Assistant die Verbindung zu VictoriaMetrics einrichten. Dafür kann man die Integration InfluxDB nutzen, die auch zu VictoriaMetrics kommunizieren kann.
Erst die Integration InfluxDB installieren. Die IP-Adresse vom Docker Container auswählen und als Datenbank einen beliebigen Namen, da VictoriaMetrics keine Datenbanken hat. Wenn man von der alten InfluxDB-App von Home Assistant migriert, am besten den gleichen Namen der Datenbank nutzen. Dann in configuration.yaml von Home Assistant parametrieren:
1influxdb:
2 tags:
3 source: HA
4 tags_attributes:
5 - friendly_name
6 default_measurement: state
7 exclude:
8 domains:
9 - persistent_notification
10 include:
11 domains:
12 - sensor
13 - binary_sensor
14 - sun
15 - light
16 - cover
17 - climate
18 - switch
Verbindung prüfen
Da Home Assistant die Daten nur bei Änderung an VictoriaMetrics schickt, muss man etwas warten, bis in Grafana die Werte sichtbar werden.
Man kann auch in dem UI von VictoriaMetrics prüfen, ob Daten ankommen. Dafür die URL http://X.X.X.X:8428/vmui/ mit der IP des Containers aufrufen. Dort als Query folgenden Wert eintragen:
1group by(__name__) ({__name__!=""})
Migration alter Daten aus InfluxDB
Es gibt von VictoriaMetrics einen Docker Container mit dem die Daten aus der alten InfluxDB in eine VictoriaMetrics-Instanz transferriert werden können. Der Container muss nicht auf dem Host mit VictoriaMetrics laufen, kann man also auch vom Laptop starten.
- http://ALTE-INFLUXDB:8086 ist die alte InfluxDB-Instanz
- http://ZIEL-IP:8428 ist der Container mit VictoriaMetrics
- USERNAME und PASSWORD sind die Zugangsdaten von InfluxDB
- OLDDBNAME ist der Name der alten Datenbank
1sudo docker run -it victoriametrics/vmctl:latest influx --influx-addr http://ALTE-INFLUXDB:8086 --influx-database OLDDBNAME --vm-addr http://ZIEL-IP:8428 --influx-user USERNAME --influx-password "PASSWORD"