WZ-IT Logo
AnleitungIoT

Grafana IoT-Dashboard mit InfluxDB: Schritt für Schritt self-hosted

Timo WevelsiepTimo WevelsiepAktualisiert: 30.06.2026

Hinweis 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

Der bewährte self-hosted IoT-Stack besteht aus vier entkoppelten Bausteinen, die jeweils eine klare Aufgabe haben:

  1. Sensoren und Gateways senden Telemetrie per MQTT an einen Broker.
  2. MQTT-Broker (z. B. Mosquitto) nimmt die Nachrichten entgegen und entkoppelt Sender und Empfänger.
  3. Telegraf abonniert die Topics, parst die Nutzdaten und schreibt sie in InfluxDB als Zeitreihen-Datenbank.
  4. 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:

  1. Connections > Data sources > Add data source > InfluxDB öffnen.
  2. Query language wählen: bei InfluxDB 2.7 Flux, bei InfluxDB 3 SQL oder InfluxQL.
  3. URL eintragen: http://influxdb:8086.
  4. Authentifizierung setzen: bei Flux Organisation, Token und Default-Bucket; bei InfluxQL/SQL den Datenbank-/Bucket-Namen und den Token.
  5. 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:

  1. Unter Alerting > Alert rules > New alert rule eine InfluxDB-Query als Bedingung definieren (z. B. Mittelwert der letzten 5 Minuten).
  2. Eine Threshold-Expression setzen, etwa IS ABOVE 60.
  3. Eine Pending period wählen (z. B. 2 Minuten), damit kurze Spitzen nicht sofort alarmieren.
  4. Über Contact points das Ziel festlegen: E-Mail, Slack, Telegram, Webhook oder PagerDuty.
  5. 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

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.

Lassen Sie uns über Ihre Idee sprechen

Ob konkrete IT-Herausforderung oder einfach eine Idee - wir freuen uns auf den Austausch. In einem kurzen Gespräch prüfen wir gemeinsam, ob und wie Ihr Projekt zu WZ-IT passt.

E-Mail
[email protected]

Führende Unternehmen vertrauen WZ-IT

  • Rekorder
  • Keymate
  • Führerscheinmacher
  • SolidProof
  • ARGE
  • Boese VA
  • NextGym
  • Maho Management
  • Golem.de
  • Millenium
  • Paritel
  • Yonju
  • EVADXB
  • Mr. Clipart
  • Aphy
  • Negosh
  • ABCO Water Systems
Timo Wevelsiep & Robin Zins - CEOs of WZ-IT

Timo Wevelsiep & Robin Zins

Geschäftsführer

1/3 - Themenauswahl33%

Worum geht es bei Ihrer Anfrage?

Wählen Sie einen oder mehrere Bereiche, bei denen wir Sie unterstützen dürfen.