Grafana IoT-Dashboard mit InfluxDB: Schritt für Schritt self-hosted
Timo Wevelsiep•Aktualisiert: 30.06.2026Hinweis zum Inhalt: Versionen, Befehle und Preise können sich ändern. Bitte prüfen Sie kritische Schritte vor dem produktiven Einsatz eigenständig. Dieser Leitfaden ersetzt keine individuelle Beratung.
Souveränes IoT-Monitoring mit Grafana und InfluxDB aufbauen? WZ-IT plant, betreibt und integriert den kompletten Open-Source-Stack auf Ihrer Infrastruktur - vom Sensor bis zum Dashboard. Zur Grafana-IoT-Plattform - Erstgespräch buchen
Ein souveränes Grafana-IoT-Dashboard mit InfluxDB bauen Sie in sechs Schritten: InfluxDB als Zeitreihen-Datenbank aufsetzen, IoT-Daten per MQTT und Telegraf (oder aus ThingsBoard) hineinschreiben, InfluxDB in Grafana als Datenquelle verbinden, Dashboard und Panels anlegen und schließlich Alerts definieren. Der gesamte Stack ist Open Source und läuft self-hosted auf Ihrer eigenen Infrastruktur (Proxmox, Hetzner oder On-Premises) - ohne Cloud-Lock-in und ohne Per-Device-Lizenz. Aktuelle Bausteine (Stand Juni 2026): Grafana OSS 13.0.x unter AGPLv3, InfluxDB 3 Core (v3.10.x) bzw. InfluxDB OSS 2.7, und Telegraf 1.39.1 als Datensammler.
Inhaltsverzeichnis
- Architektur: Datenfluss vom Sensor zum Dashboard
- Welche InfluxDB-Version passt
- Schritt 1: InfluxDB self-hosted aufsetzen
- Schritt 2: IoT-Daten per MQTT und Telegraf schreiben
- Schritt 3: ThingsBoard-Daten nach InfluxDB
- Schritt 4: Grafana als Datenquelle verbinden
- Schritt 5: Dashboard und Panels bauen
- Schritt 6: Alerts einrichten
- Was kostet das: self-hosted vs. Grafana Cloud
- Grafana-IoT-Stack souverän betreiben mit WZ-IT
- Weiterführende Guides
Architektur: Datenfluss vom Sensor zum Dashboard
Der bewährte self-hosted IoT-Stack besteht aus vier entkoppelten Bausteinen, die jeweils eine klare Aufgabe haben:
- Sensoren und Gateways senden Telemetrie per MQTT an einen Broker.
- MQTT-Broker (z. B. Mosquitto) nimmt die Nachrichten entgegen und entkoppelt Sender und Empfänger.
- Telegraf abonniert die Topics, parst die Nutzdaten und schreibt sie in InfluxDB als Zeitreihen-Datenbank.
- Grafana liest InfluxDB als Datenquelle und visualisiert die Daten in Dashboards und alarmiert bei Schwellwerten.
In der IoT-Architektur nach Schichten sitzt InfluxDB damit auf der Plattform-/Persistenzschicht, Grafana auf der Anwendungsschicht. Der entscheidende Vorteil dieser Trennung: Jeder Baustein ist austauschbar, keiner zwingt Sie in ein proprietäres Format. Sie können Telegraf später durch Node-RED ersetzen, den Broker skalieren oder InfluxDB gegen eine andere Zeitreihen-Datenbank tauschen, ohne das Dashboard neu zu bauen.
Welche InfluxDB-Version passt
InfluxData bietet 2026 mehrere Linien parallel an. Die Wahl entscheidet über Lizenz, Langzeitspeicherung und Query-Sprache:
| Variante | Lizenz | Eignung | Query-Sprachen |
|---|---|---|---|
| InfluxDB 3 Core (v3.10.x) | MIT / Apache 2.0 | Single-Node, aktuelle Daten, Edge; keine Compaction | SQL, InfluxQL |
| InfluxDB 3 Enterprise | kommerziell (Heim-Tier gratis) | Langzeit, Compaction, HA, Multi-Node | SQL, InfluxQL |
| InfluxDB OSS 2.7 | MIT | self-hosted IoT mit Langzeitspeicherung, weiterhin gepflegt | Flux, InfluxQL |
InfluxDB 3 Core ist die quelloffene Single-Node-Variante (dual lizenziert unter MIT/Apache 2.0, github.com/influxdata/influxdb). Sie ist auf aktuelle Daten optimiert und besitzt laut Hersteller keine Compaction und keine Langzeit-Optimierung - ideal für Edge und kurze Aufbewahrung. InfluxDB 3 Enterprise ergänzt Compaction, historische Queries und Hochverfügbarkeit (influxdata.com); für nicht-kommerziellen Heimgebrauch gibt es eine kostenlose Single-Node-Lizenz (zwei Kerne), kommerziell ist sie kostenpflichtig. Für viele self-hosted IoT-Projekte mit echter Langzeithistorie ist InfluxDB OSS 2.7 (MIT, Flux + InfluxQL) nach wie vor die pragmatischste, stabilste Wahl - sie ist laut Roadmap weiter gepflegt und nicht abgekündigt. Die folgenden Schritte zeigen wir mit InfluxDB 2.7; der Pfad für InfluxDB 3 ist nahezu identisch, nur die Query-Sprache wechselt von Flux zu SQL/InfluxQL.
Schritt 1: InfluxDB self-hosted aufsetzen
Am einfachsten läuft der Stack containerisiert. Eine minimale docker-compose.yml für InfluxDB plus Grafana:
services:
influxdb:
image: influxdb:2.7
ports: ["8086:8086"]
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: admin
DOCKER_INFLUXDB_INIT_PASSWORD: "change-me"
DOCKER_INFLUXDB_INIT_ORG: wz-it
DOCKER_INFLUXDB_INIT_BUCKET: iot
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: "my-super-secret-token"
volumes:
- influx-data:/var/lib/influxdb2
grafana:
image: grafana/grafana-oss:13.0.3
ports: ["3000:3000"]
volumes:
- grafana-data:/var/lib/grafana
volumes:
influx-data:
grafana-data:
Nach docker compose up -d ist InfluxDB unter Port 8086 erreichbar. Wichtig sind drei Begriffe: die Organisation (wz-it), der Bucket (iot, die Datenbank für Ihre Messreihen) und der API-Token, den Telegraf und Grafana zum Schreiben bzw. Lesen brauchen. In Produktion legen Sie pro Aufgabe getrennte Tokens mit minimalen Rechten an (ein reiner Schreib-Token für Telegraf, ein Lese-Token für Grafana) und stellen TLS über einen Reverse-Proxy voran.
Schritt 2: IoT-Daten per MQTT und Telegraf schreiben
Telegraf (aktuell v1.39.1 vom 29. Juni 2026, MIT-Lizenz) ist der Standard-Agent, um MQTT-Telemetrie nach InfluxDB zu bringen. Das mqtt_consumer-Input-Plugin abonniert Topics, das influxdb_v2-Output-Plugin schreibt nach InfluxDB. Eine schlanke telegraf.conf:
[[inputs.mqtt_consumer]]
servers = ["tcp://mosquitto:1883"]
topics = ["sensors/#"]
username = "telegraf"
password = "change-me"
data_format = "json_v2"
[[inputs.mqtt_consumer.json_v2]]
[[inputs.mqtt_consumer.json_v2.field]]
path = "temperature"
type = "float"
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
token = "my-super-secret-token"
organization = "wz-it"
bucket = "iot"
Sendet ein Sensor an sensors/halle1/temp ein JSON wie {"temperature": 21.7}, landet der Wert als Messreihe mqtt_consumer mit dem Feld temperature im Bucket iot. Das Topic wird automatisch als Tag mitgespeichert, sodass Sie später pro Gerät oder Halle filtern können. Wer komplexere Transformationen, Protokollübersetzung oder Anreicherung braucht, schaltet statt oder neben Telegraf Node-RED zwischen Broker und Datenbank. Das influxdb_v2-Output funktioniert identisch gegen InfluxDB 3, da dessen Write-API v2-kompatibel ist.
Schritt 3: ThingsBoard-Daten nach InfluxDB
Betreiben Sie bereits ThingsBoard als IoT-Plattform, gibt es drei saubere Wege, die Telemetrie zusätzlich in InfluxDB und Grafana zu bekommen:
- Parallel per Telegraf (entkoppelt): Da die Geräte ohnehin per MQTT senden, lässt Telegraf dieselben Topics mitlesen und schreibt nach InfluxDB. ThingsBoard und InfluxDB erhalten beide die Rohdaten, ohne sich gegenseitig zu beeinflussen.
- Über die Rule Engine: In der ThingsBoard-Rule-Chain leitet ein REST-API-Call- oder MQTT-Node die Telemetrie an Telegraf bzw. direkt an die InfluxDB-Write-API weiter. So wandern nur ausgewählte, bereits prozessierte Werte in die Zeitreihen-Datenbank.
- Direkt aus der Datenbank: ThingsBoard speichert Telemetrie je nach Setup in PostgreSQL/TimescaleDB. Grafana kann diese über die eingebaute PostgreSQL-Datenquelle direkt lesen, ganz ohne zweite Datenbank.
Welcher Weg passt, hängt davon ab, ob Grafana nur ergänzen oder InfluxDB die führende Historie bilden soll. Für reines Langzeit-Monitoring bevorzugen wir die entkoppelte Telegraf-Variante.
Schritt 4: Grafana als Datenquelle verbinden
Grafana bringt die InfluxDB-Datenquelle eingebaut mit, ein Plugin ist nicht nötig (grafana.com). Im Grafana-UI:
- Connections > Data sources > Add data source > InfluxDB öffnen.
- Query language wählen: bei InfluxDB 2.7
Flux, bei InfluxDB 3SQLoderInfluxQL. - URL eintragen:
http://influxdb:8086. - Authentifizierung setzen: bei Flux Organisation, Token und Default-Bucket; bei InfluxQL/SQL den Datenbank-/Bucket-Namen und den Token.
- Save & test klicken - Grafana bestätigt die Verbindung.
Verwenden Sie für Grafana einen eigenen Lese-Token mit minimalen Rechten, nicht den Admin-Token aus dem Setup.
Schritt 5: Dashboard und Panels bauen
Legen Sie über Dashboards > New > New dashboard > Add visualization das erste Panel an und wählen die InfluxDB-Datenquelle. Ein Time-Series-Panel für die mittlere Temperatur sieht in Flux (InfluxDB 2.7) so aus:
from(bucket: "iot")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "mqtt_consumer" and r._field == "temperature")
|> aggregateWindow(every: v.windowPeriod, fn: mean)
Die Variablen v.timeRangeStart, v.timeRangeStop und v.windowPeriod füllt Grafana automatisch aus dem Zeitfilter und der Panel-Breite - die Query passt sich also an den gewählten Zeitraum an. Für InfluxDB 3 nutzen Sie stattdessen InfluxQL oder SQL, etwa SELECT mean(temperature) FROM mqtt_consumer WHERE $timeFilter GROUP BY time($interval).
Bewährte Panel-Typen für IoT:
- Time series für Verläufe (Temperatur, Druck, Durchsatz).
- Stat und Gauge für aktuelle Einzelwerte mit Schwellwert-Färbung.
- State timeline für An/Aus- oder Status-Verläufe.
- Table für die letzten Rohmesswerte je Gerät.
Mit Dashboard-Variablen (z. B. eine Variable gerät, gespeist aus den Topic-Tags) wird ein Dashboard für die ganze Flotte wiederverwendbar, statt es pro Maschine zu duplizieren.
Schritt 6: Alerts einrichten
Grafana nutzt seit den 9er-Versionen das Unified Alerting, das direkt auf den Datenquellen läuft - self-hosted, ohne Zusatzdienst. Eine Alarmregel für zu hohe Temperatur richten Sie so ein:
- Unter Alerting > Alert rules > New alert rule eine InfluxDB-Query als Bedingung definieren (z. B. Mittelwert der letzten 5 Minuten).
- Eine Threshold-Expression setzen, etwa
IS ABOVE 60. - Eine Pending period wählen (z. B. 2 Minuten), damit kurze Spitzen nicht sofort alarmieren.
- Über Contact points das Ziel festlegen: E-Mail, Slack, Telegram, Webhook oder PagerDuty.
- Mit Notification policies steuern, welche Alarme an welches Team gehen.
So entsteht eine vollständige, herstellerneutrale Alarmierungskette vom Schwellwert bis zur Benachrichtigung - ohne externe Monitoring-SaaS.
Was kostet das: self-hosted vs. Grafana Cloud
Der self-hosted Stack ist softwareseitig kostenlos: Grafana OSS unter AGPLv3, InfluxDB 3 Core unter MIT/Apache 2.0 bzw. InfluxDB OSS 2.7 unter MIT, Telegraf unter MIT. Es bleiben Betriebskosten (Server, Storage, Wartung). Die Cloud-Alternativen rechnen anders ab:
| Modell | Kosten (Stand Juni 2026) | Datenhoheit |
|---|---|---|
| Self-hosted OSS-Stack | nur Server + Betrieb, keine Lizenz | volle EU-Datenhoheit |
| Grafana Cloud Free | 0 EUR: 10.000 aktive Serien, 3 Nutzer, 14 Tage Aufbewahrung | bei Grafana Labs |
| Grafana Cloud (kostenpflichtig) | nutzungsbasiert nach Serien/GB | bei Grafana Labs |
| InfluxDB 3 Enterprise | kommerziell (Heim-Tier gratis) | je nach Hosting |
Grafana Cloud ist für kleine Setups bequem, der kostenlose Tarif aber eng begrenzt (10.000 Serien, 14 Tage Aufbewahrung, grafana.com/pricing). Bei IoT-typisch vielen Serien und langer Historie skalieren nutzungsbasierte Cloud-Tarife schnell nach oben, und die Daten liegen außerhalb Ihrer Kontrolle. Self-hosted bleibt die Rechnung planbar und die Telemetrie in der EU auf Ihrer Infrastruktur. Diese Abwägung vertiefen wir in IoT self-hosted vs. Cloud.
Grafana-IoT-Stack souverän betreiben mit WZ-IT
Grafana, InfluxDB, Telegraf und MQTT bilden zusammen einen offenen, herstellerneutralen Monitoring-Stack - die ideale Basis für souveränes IoT ohne Cloud-Lock-in und ohne Per-Device-Lizenz. Wir bei WZ-IT planen die Edition- und Versionswahl (InfluxDB 3 vs. 2.7, Retention, Sizing), setzen den Stack containerisiert auf Ihrer Infrastruktur in der EU auf (Proxmox, Hetzner oder On-Premises), härten ihn mit TLS, getrennten Tokens und Backups und bauen die Dashboards und Alarmketten für Ihren konkreten Anwendungsfall. Sie behalten Daten, Token und Betrieb in der Hand. Mehr dazu auf unserer Grafana-Expertise und im IoT-Hub.
Grafana-IoT-Dashboard mit InfluxDB self-hosted aufsetzen? Zur Grafana-IoT-Plattform - Erstgespräch buchen
Weiterführende Guides
- Was ist MQTT? - das Protokoll, das die Daten an den Broker liefert
- IoT-Architektur: die Schichten erklärt - wo InfluxDB und Grafana sitzen
- Was ist ThingsBoard? - Plattform-Alternative und Datenquelle
- Grafana-Expertise - Dashboards und Alerting im Betrieb
- Node-RED-Expertise - MQTT-Daten verarbeiten und nach InfluxDB routen
Sie möchten IoT nicht selbst betreiben? WZ-IT übernimmt Einrichtung, Betrieb und Wartung – DSGVO-konform aus Deutschland.
Häufig gestellte Fragen
Antworten auf die wichtigsten Fragen
Grafana bringt die InfluxDB-Datenquelle bereits eingebaut mit, ein Plugin ist nicht nötig. Sie legen unter Connections > Data sources eine neue InfluxDB-Quelle an, tragen die URL (z. B. http://influxdb:8086) ein, wählen die Query-Sprache passend zur Version (InfluxDB 2.x: Flux oder InfluxQL; InfluxDB 3: SQL oder InfluxQL) und authentifizieren sich per API-Token. Nach Save & test ist die Quelle in Panels nutzbar.
InfluxDB 3 Core (aktuell v3.10.x, MIT/Apache-2.0) ist die kostenlose Single-Node-Variante, optimiert für aktuelle Daten und Edge; ihr fehlen Compaction und Langzeit-Optimierung. InfluxDB 3 Enterprise ergänzt Compaction, historische Queries und Hochverfügbarkeit (für Heimgebrauch gibt es eine kostenlose Single-Node-Lizenz, kommerziell kostenpflichtig). InfluxDB OSS 2.7 (MIT) ist weiterhin gepflegt und für viele self-hosted IoT-Setups mit Langzeitspeicherung die pragmatische Wahl.
Der Standardweg ist Telegraf (aktuell v1.39.1, MIT). Das mqtt_consumer-Input-Plugin abonniert Ihre MQTT-Topics auf dem Broker (z. B. Mosquitto), parst JSON oder das Influx-Line-Protocol und schreibt die Werte über das influxdb_v2-Output-Plugin in InfluxDB. So bleibt der Datenpfad vom Sensor zur Datenbank entkoppelt und herstellerneutral.
Ja, self-hosted ist der Stack kostenlos. Grafana OSS (v13.0.x) steht unter AGPLv3, InfluxDB 3 Core unter MIT/Apache-2.0, InfluxDB OSS 2.7 unter MIT, Telegraf unter MIT. Kosten entstehen nur durch Betrieb (Server, Storage, Wartung). Grafana Cloud hat einen kostenlosen Tarif (Stand Juni 2026: 10.000 aktive Serien, 3 Nutzer, 14 Tage Aufbewahrung); InfluxDB 3 Enterprise und Grafana Enterprise sind kommerzielle Optionen.
Ja. Entweder konsumieren Sie die MQTT-Telemetrie der Geräte parallel per Telegraf nach InfluxDB (entkoppelt), oder Sie leiten Telemetrie in der ThingsBoard Rule Engine über einen REST- oder MQTT-Node an Telegraf/InfluxDB weiter. Alternativ liest Grafana die von ThingsBoard genutzte TimescaleDB direkt über die PostgreSQL-Datenquelle.
Grafana nutzt Unified Alerting. Sie definieren unter Alerting > Alert rules eine Regel, die in einem festen Intervall eine InfluxDB-Query auswertet (z. B. Mittelwert der Temperatur), legen einen Schwellwert und eine Pending-Dauer fest und routen Auslösungen über Contact Points (E-Mail, Slack, Webhook, Telegram) per Notification Policy. So funktioniert Alarmierung komplett self-hosted.
Das hängt von der InfluxDB-Version ab. InfluxDB 2.x unterstützt Flux (Standard) und InfluxQL. InfluxDB 3 unterstützt SQL (über FlightSQL) und InfluxQL, aber kein Flux mehr. Für neue InfluxDB-3-Dashboards in Grafana wählen Sie daher SQL oder InfluxQL; bestehende 2.x-Dashboards laufen weiter mit Flux.
Mehr zu IoT
- Was ist LoRaWAN?
- Was ist MQTT?
- Was ist ThingsBoard?
- Was ist ChirpStack?
- IoT-Architektur in Schichten
- LoRaWAN vs NB-IoT vs WLAN/5G
- ThingsBoard Preise & Editionen
- Was kostet ChirpStack?
- ThingsBoard vs ChirpStack
- IoT-Plattform: self-hosted vs Cloud
- Open-Source-IoT-Plattformen im Vergleich
- ThingsBoard vs AWS IoT Core & Azure IoT Hub
- ThingsBoard mit Docker installieren
- ChirpStack & LoRaWAN-Gateway einrichten
- Grafana IoT-Dashboard mit InfluxDB
- ThingsBoard Rule Engine: Alarme & Benachrichtigungen
- Milesight-Sensor in ChirpStack: Payload-Decoder
- Node-RED MQTT-Dashboard für Sensordaten
- Predictive Maintenance & Retrofit
- Gebäude-IoT / Smart Building mit LoRaWAN







