Zum Inhalt springen

Konfiguration von InfluxDB

InfluxDB wird über Umgebungsvariablen konfiguriert. Der Container stammt allerdings nicht von SOLECTRUS, sondern ist das offizielle InfluxDB-2-Image.

Zeitzone gemäß Liste. Standardwert ist UTC.

Sie betrifft ausschließlich die Zeitstempel im Protokoll von InfluxDB. Die Messwerte selbst speichert InfluxDB immer in UTC, daran ändert TZ nichts.

Beispiel
TZ=Europe/Berlin

Schaltet die Ersteinrichtung ein. Erlaubt sind setup für eine neue Datenbank und upgrade für die Migration einer InfluxDB 1.x. SOLECTRUS verwendet setup.

setup greift nur, solange es noch keine Datenbank gibt. Liegt unter INFLUX_VOLUME_PATH bereits eine, überspringt InfluxDB die Einrichtung und startet einfach mit den vorhandenen Daten. Der Wert darf also dauerhaft stehen bleiben, er richtet kein zweites Mal etwas ein.

Fehlt die Variable dagegen ganz, richtet InfluxDB auch auf einem leeren Datenpfad nichts ein. Die übrigen DOCKER_INFLUXDB_INIT_*-Variablen bleiben dann wirkungslos.

Beispiel
DOCKER_INFLUXDB_INIT_MODE=setup

Benutzername des Administrators für den Login an der Web-Oberfläche. InfluxDB legt den Administrator beim ersten Start an.

Im Setup-Modus verlangt InfluxDB den Benutzernamen. Fehlt er, bricht der Container mit einer Fehlermeldung ab. Nach dem ersten Start ändert die Variable nichts mehr.

Beispiel
DOCKER_INFLUXDB_INIT_USERNAME=admin

Passwort des Administrators für den Login an der Web-Oberfläche. Im Container heißt die Variable DOCKER_INFLUXDB_INIT_PASSWORD. Auch das Passwort verlangt InfluxDB im Setup-Modus, ohne bricht der Container ab.

InfluxDB übernimmt das Passwort beim ersten Start. Wer es später in der Konfiguration überschreibt, ändert damit nicht das Passwort, sondern verliert nur die Notiz, wie es lautet. Ändern lässt es sich in der Web-Oberfläche von InfluxDB.

Beispiel
INFLUX_PASSWORD=ExAmPl3PA55W0rD

Organisation, mit der InfluxDB Benutzer, Buckets und Tokens gruppiert. SOLECTRUS verwendet solectrus, weitere Organisationen braucht es nicht. Im Container heißt die Variable DOCKER_INFLUXDB_INIT_ORG.

Angelegt wird die Organisation beim ersten Start. Ein späterer Name benennt sie nicht um. Die anderen Dienste lesen INFLUX_ORG direkt und greifen dann ins Leere.

Beispiel
INFLUX_ORG=solectrus

Bucket für die Messwerte, also die eigentliche Datenbank. SOLECTRUS verwendet nur einen Bucket, deshalb heißt er solectrus. Im Container heißt die Variable DOCKER_INFLUXDB_INIT_BUCKET.

Auch der Bucket entsteht beim ersten Start. Ein späterer Name benennt ihn nicht um. Die Kollektoren und das Dashboard lesen INFLUX_BUCKET direkt und greifen dann ins Leere.

Beispiel
INFLUX_BUCKET=solectrus

Token mit Vollzugriff auf alles. InfluxDB legt ihn beim ersten Start mit genau diesem Wert an. HELIOS nutzt ihn für die Datensicherung und die Wiederherstellung. Im Container heißt die Variable DOCKER_INFLUXDB_INIT_ADMIN_TOKEN.

Fehlt sie, erzeugt InfluxDB selbst einen zufälligen Token. Der steht dann nirgends in der Konfiguration, und die Datensicherung fällt aus. Ein anderer Wert erzeugt keinen neuen Token, er sperrt HELIOS nur aus.

Die übrigen Dienste arbeiten nicht mit diesem Token, sondern mit je einem eigenen für Lesen, Schreiben oder beides. Die liest InfluxDB nicht, sie stehen bei HELIOS.

Beispiel
INFLUX_ADMIN_TOKEN=my-super-secret-admin-token

Speichert die API-Tokens als Hash statt im Klartext. Erlaubt sind true und false. Den Standardwert bestimmt InfluxDB je nach Version: ab 2.9 ist das Hashing eingeschaltet, in 2.8 ausgeschaltet, ältere Versionen kennen die Option nicht.

Anders als die DOCKER_INFLUXDB_INIT_*-Variablen wertet InfluxDB sie bei jedem Start aus. Beim ersten Start mit true wandelt es alle gespeicherten Tokens um. Aus dem Hash lässt sich ein verlorener Token nicht mehr zurückholen, und ein Downgrade auf eine ältere InfluxDB löscht die Tokens.

Beispiel
INFLUXD_USE_HASHED_TOKENS=true

Pfad auf dem Host, in dem die Datenbank gespeichert wird. Er wird als Volume in den Container gemountet und sollte auf einem Datenträger mit ausreichend Speicherplatz liegen. InfluxDB selbst liest die Variable nicht.

Was hier steht, entscheidet über alles Weitere: Existiert am Pfad schon eine Datenbank, verwendet InfluxDB diese und überspringt die Ersteinrichtung. Andernfalls legt es eine neue an, und die DOCKER_INFLUXDB_INIT_*-Variablen kommen zum Zug.

Beispiel
INFLUX_VOLUME_PATH=/somewhere/solectrus/influxdb