InfluxDB: Time series database - Docker

This page is also available in English

Eine InfluxDB Datenbank ist eine für Zeitdaten optimierte Datenbank. Für das Visualisieren wird InfluxDB des Öfteren in Kombination mit Grafana eingesetzt. Achtung: Der Artikel bezieht sich auf die InfluxDB Version 1, Informationen  zur Version 2 folgen in Kürze.

Docker Basics

Docker ermöglicht es, Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Das OS spielt also keine Rolle, vorausgesetzt Docker lässt sich installieren.
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Datenbank Initialisieren

Bevor wir den Container verwenden können, muss darauf eine Datenbank angelegt werden. Der folgende Befehl startet den Container, legt die Datenbank an und stoppt den Container im Anschluss wieder. Das Passwort sollte an dieser Stelle natürlich angepasst werden:

mkdir -p /docker
mkdir -p /docker/influxdb
docker run \
--rm -e INFLUXDB_DB=iobroker \
-e INFLUXDB_ADMIN_USER=admin \
-e INFLUXDB_ADMIN_PASSWORD=adminpassword \
-e INFLUXDB_USER=iobroker \
-e INFLUXDB_USER_PASSWORD=password4iobrokerdb \
-v /docker/influxdb:/var/lib/influxdb influxdb /init-influxdb.sh

Die Ausgabe sollte ca. wie folgt aussehen:

docker run --rm -e INFLUXDB_DB=ha -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=xxx-e INFLUXDB_USER=ha -e INFLUXDB_USER_PASSWORD=xxx -v /var/web/ha.libe.net/influxdb:/var/lib/influxdb influxdb /init-influxdb.sh
..
ts=2022-01-18T11:01:45.570263Z lvl=info msg="Executing query" log_id=0Z7DRsEl000 service=query query="CREATE DATABASE ha"
[httpd] 127.0.0.1 - - [18/Jan/2022:11:01:45 +0000] "POST /query?chunked=true&db=&epoch=ns&q=CREATE+DATABASE+ha HTTP/1.1" 200 57 "-" "InfluxDBShell/1.8.3" 06a1e3a9-784e-11ec-8002-0242ac110002 6635
/init-influxdb.sh: ignoring /docker-entrypoint-initdb.d/*
...
ts=2022-01-18T11:01:45.590635Z lvl=info msg="Closed service" log_id=0Z7DRsEl000 service=subscriber
ts=2022-01-18T11:01:45.590686Z lvl=info msg="Server shutdown completed" log_id=0Z7DRsEl000

InfluxDB starten

Nachdem der Container initialisiert wurde, habe ich mit "docker network create smart-home" ein eigenes Netzwerk angelegt, die Datenbank kann daraufhin mit folgendem Befehl gestartet werden:

docker run -d \
--name=influxdb \
--network=smart-home \
-p 8086:8086 \
--restart=always \
-v /docker/influxdb:/var/lib/influxdb influxdb

Alternativ kann InfluxDB beim Einsatz mehrerer Container auch über eine Docker-Compose-Datei eingebunden werden, siehe: Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

Shell docker exec

Beim Einsatz des Docker-Containers, kann die Datenbank über docker exec im Terminal verwaltet werden

Retention-Policy anzeigen und verstehen

bernhard@sox:~$ docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
...
Please set a database with the command "use <database>".
> use ha
Using database ha
> SHOW RETENTION POLICIES
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

Als Standard wird beim Anlegen der Datenbank eine Retention-Policy mit dem Namen "autogen" angelegt. Die Policy besitzt eine unendlich lange Retention und eine "shrdGroupDuration" von sieben Tagen. "0s" als Retention steht für unendlich. Beim Überschreiten der Retention werden shrdGroups gelöscht, was bei der Standardeinstellung immer Blöcke von sieben Tagen löschen würde, entsprechend hat die shardGroupDuration bei einem anderen Wert als 0s einen Einfluss auf die Retention.

Werte anzeigen und bestimmte Werte löschen

Ich hatte anfangs von meinem Temperatursensor einige Falschmeldungen mit dem Wert "-127". Um diese zu entfernen kann ein bestimmter Zeitwert verwendet werden.

  1. Herausfinden des Key für die Werte: "SHOW SERIES ON ha"
  2. Anzeige der Werte mit "select time,value from "°C" where value < -100 limit 10"
  3. Löschen der angezeigten Werte über dessen Zeitwert: "delete from "°C" where time = 1642559861967671040"
> SHOW SERIES ON ha
key
---
%,domain=sensor,entity_id=aussen_battery
%,domain=sensor,entity_id=aussen_humidity
%,domain=sensor,entity_id=bad_battery
%,domain=sensor,entity_id=bad_humidity
%,domain=sensor,entity_id=baldrian_battery
%,domain=sensor,entity_id=baldrian_humidity
...
°C,domain=sensor,entity_id=gefrierschrank_temperature
°C,domain=sensor,entity_id=heating_pufferspeicher
°C,domain=sensor,entity_id=heating_ruecklauf
°C,domain=sensor,entity_id=heating_vorlauf
°C,domain=sensor,entity_id=heating_waermetauscher
°C,domain=sensor,entity_id=heating_warmwasser

> select time,value from "°C" where value < -100 limit 10
name: °C
time                value
----                -----
1642559861967671040 -127
1642577899531245824 -127
1642582871417732096 -127
1642583544890542080 -127
1642590298966192128 -127
1642590767340711168 -127
1642590767352859136 -127
1642590767357784064 -127
1642590767358241024 -127
1642590767358556928 -127
> delete from "°C" where time = 1642559861967671040
> delete from "°C" where time = 1642577899531245824
> delete from "°C" where time = 1642582871417732096
> delete from "°C" where time = 1642583544890542080
> delete from "°C" where time = 1642590298966192128
> delete from "°C" where time = 1642590767340711168
> delete from "°C" where time = 1642590767357784064
> delete from "°C" where time = 1642590767358241024
> delete from "°C" where time = 1642590767358556928

Queries

https://docs.influxdata.com/influxdb/v1.3/query_language/functions/

Upgrade Influxdb 1 auf 2

docker run -p 8086:8086 \
  -v ./influxdb:/var/lib/influxdb \
  -v ./influxdb2:/var/lib/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=upgrade \
  -e DOCKER_INFLUXDB_INIT_USERNAME=ha \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=pASSED \
  -e DOCKER_INFLUXDB_INIT_ORG=my-org \
  -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
  influxdb

Nähere Details zum Upgrade auf die Version 2 folgen in Kürze ...

Zugriff auf die InfluxDB

Für den Zugriff auf die Datenbank können einfach die zuvor beim Initialisieren hinterlegten Daten verwendet werden:

  • Host innerhalb des Netzwerkes "smart-home": influxdb:8086
  • Datenbankname: influxb
  • User: admin
  • Passwort: adminpassword

Zugriff aus Grafana und ioBroker, siehe auch: /grafana#Datenquelle und /iobroker#InfluxDB bzw. Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview ioBroker installieren - Docker

ioBroker installieren - Docker

geändert: 12.11.2020 von Bernhard (Erstveröffentlichung: 06.11.2020)

Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.  ... weiterlesen

Preview Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant

Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant

geändert: 05.05.2021 von Bernhard (Erstveröffentlichung: 05.11.2020)

Für die Heim-Automatisierung gibt es neben zahlreichen verschiedenen Standards eine große Menge an verschiedenen Plattformen. Open Source Plattformen bieten dabei oft die Möglichkeit verschiedene Automatisierungs-Standards miteinander zu verbinden. Als Beispiel könnte ein kleiner Mini-Computer, ein Raspberry Pi oder ein NAS, ausgestattet mit mehreren Empfängern, verschiedene Automatisierungs-Lösungen über eine Plattform steuern. ... weiterlesen

Preview Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

geändert: 09.03.2022 von Bernhard (Erstveröffentlichung: 06.11.2020)

Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant Out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt... ... weiterlesen


Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details