Aufgabe 09 - InfluxDB mit Grafana
Aufgabe 09 - InfluxDB mit Grafana
Abschnitt betitelt „Aufgabe 09 - InfluxDB mit Grafana“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung wird eine Zeitreihendatenbank praktisch ausprobiert: Testdaten erzeugen, InfluxDB und Grafana per Docker Compose starten, CSV importieren und in Grafana visualisieren (siehe Kapitel 4 - DBMS Markt, Zeitreihendatenbanken). Im Expertenteil entsteht eine echte Live-Datenpipeline mit Node-RED.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Docker und Docker Compose.
- Browserzugang zu mockaroo.com.
- Kapitel 4 - DBMS Markt (Zeitreihendatenbanken).
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie erzeugen Zeitreihen-Testdaten mit Tags und Fields.
- Sie starten einen Container-Stack mit vorkonfigurierter InfluxDB und Grafana.
- Sie importieren annotiertes CSV und visualisieren es mit Flux.
- Sie bauen eine kontinuierliche Live-Datenpipeline und verstehen Retention.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: Testdaten erzeugen (Teil A).
- Reorganisation und Transfer: den Stack starten und Daten importieren und visualisieren (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: eine Live-Pipeline aufbauen und beurteilen (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Teil A - Testdaten in Mockaroo
Abschnitt betitelt „Teil A - Testdaten in Mockaroo“- Auf Mockaroo ein Schema „Smart Building Sensoren” mit den Spalten
_measurement(Formula, konstant"sensors"),time(Datetime ISO 8601),buildingunddevice(Custom List),temperature_c,humidity_rh,co2_ppm,power_w(Number) anlegen und als CSV exportieren.buildingunddeviceeignen sich als Tags, die Messwerte als Fields. Spaltenreihenfolge:_measurement,time,building,device,temperature_c,humidity_rh,co2_ppm,power_w.
Teil B - Stack starten
Abschnitt betitelt „Teil B - Stack starten“- Einen Projektordner
influx-grafana-lab/mitdocker-compose.yml(Servicesinfluxdb:2undgrafana, InfluxDB perDOCKER_INFLUXDB_INIT_*vorkonfiguriert: Orgschool, Bucketsensors, Admin-Token) und der Datasource-Provisioning-Dateigrafana/provisioning/datasources/datasource.yml(Typ influxdb, Version Flux, Org/Bucket/Token) anlegen. - Mit
docker compose up -dstarten, mitdocker compose psprüfen und die UIs öffnen (InfluxDBhttp://localhost:8086, Grafanahttp://localhost:3000).
Teil C - Import und Dashboard
Abschnitt betitelt „Teil C - Import und Dashboard“-
Das CSV per
influx writeimportieren (annotiertes CSV mit#datatype measurement,dateTime:RFC3339,tag,tag,double,double,long,longund den Spaltennamen als zweitem Header,--skipHeader 1). Der Import kann über einen wegwerfbaren CLI-Container erfolgen, der das CSV nur mountet. -
Den Import verifizieren, per CLI oder im Data Explorer:
Terminal-Fenster docker exec influxdb influx query 'from(bucket:"sensors") |> range(start:-2y) |> count()' --token school-super-token -
In Grafana die Datenquelle testen und ein Dashboard mit vier Panels bauen:
temperature_cüber Zeit gruppiert nachbuilding(Time series);co2_ppmfürbuilding = "E101"(Time series); aktuellerhumidity_rhfür ein Gebäude (Stat); die letzten 20 Messwerte als Tabelle. Beispiel-Flux:from(bucket: "sensors")|> range(start: -1y)|> filter(fn: (r) => r._measurement == "sensors")|> filter(fn: (r) => r._field == "temperature_c")|> group(columns: ["building"])
Teil D - Expertenteil: Live-Datenpipeline mit Node-RED
Abschnitt betitelt „Teil D - Expertenteil: Live-Datenpipeline mit Node-RED“-
Bucket mit Retention: Einen zweiten Bucket
cryptomit 30 Tagen Vorhaltezeit anlegen. Erklären, was die Retention Policy bewirkt und warum sie bei fortlaufenden Live-Daten wichtig ist (alte Daten werden automatisch gelöscht).Terminal-Fenster docker exec influxdb influx bucket create --name crypto --org school --token school-super-token --retention 30d -
Node-RED anbinden: Den Docker-Stack um einen
nodered-Service erweitern (Port 1880, Umgebungsvariablen für Org/Bucket/Token/URL) und starten. -
Live-Flow: In Node-RED einen Flow aufbauen, der alle fünf Sekunden Kurse mehrerer Kryptowährungen von der Binance-API abruft, ins InfluxDB-Line-Protocol umwandelt und in den Bucket
cryptoschreibt (der fertige Flow kann per Import eingespielt werden). Mit Deploy starten und im Debug-Node prüfen, dass geschrieben wird. -
Live-Dashboard: Ein Grafana-Dashboard mit Panels für den BTC-Preis über die Zeit, alle Coins, den aktuellen BTC-Preis (Stat,
|> last()) und eine Preistabelle bauen. -
Reflexion: In vier bis fünf Sätzen begründen, warum eine Zeitreihendatenbank für diese Live-Messwerte besser passt als eine relationale Datenbank (Schreibrate, Retention, zeitbasierte Abfragen), und wo ihre Grenze läge (etwa komplexe Joins über viele Entitäten).
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Worin unterscheiden sich Tags und Fields in InfluxDB?
- Wozu dient das annotierte CSV-Format beim Import?
- Was bewirkt eine Retention Policy?
- Warum passt eine Zeitreihendatenbank besser zu Sensordaten als ein relationales System?
- Wo liegt die Grenze einer Zeitreihendatenbank gegenüber einer relationalen?
- Das verwendete
docker-compose.ymlund diedatasource.yml, die CSV-Schema-Beschreibung, je Panel ein Screenshot samt Flux-Query und Einstellungen sowie einREADME.mdmit allen Docker- und Import-Befehlen. - Für Teil D zusätzlich das erweiterte
docker-compose.yml, den Node-RED-Flow und die Screenshots des Live-Dashboards.
HTL Villach, 2025-2026,
https://www.htl-villach.at