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, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabh├Ąngige isolierte Umgebung:
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=???-e INFLUXDB_USER=ha -e INFLUXDB_USER_PASSWORD=??? -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!

Aktualisiert: 25.01.2022 von Bernhard ­čöö


Top-Artikel in diesem Bereich


Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant
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.

ioBroker installieren - Docker
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.

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
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...

Fragen / Kommentare


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