Grafana Howto: von der Middleware via MQTT in die InfluxDB

- Lesedauer 5 Minuten -

In den letzten Artikeln wurde euch bereits eine kleine Einführung über das Open Source Tool Grafana gegeben. Zudem wurde berichtet, wie man Grafana lokal unter Ubuntu installieren und einrichten kann. Heute installieren wir eine kleine Datenbank für eure Anwendungen auf einer Linux-Distribution und schreiben erste Beispieldaten, welche wir per MQTT entgegennehmen in die Datenbank. Die gespeicherten Daten visualisieren wir anschließend in Grafana.

Hierzu kommt InfluxDB in Verbindung mit Telegraf zum Einsatz. Der Vorteil von InfluxDB ist unter anderem die automatische und stressfreie, zeitliche Organisation von Datensätzen. InfluxDB bietet viele Plug-ins, welche die Anbindung an andere Protokolle und Tools sehr einfach gestalten.
Zur lokalen Installation benötigt ihr nichts Weiteres als ein klein wenig Zeit. Die folgenden Befehle können einfach über ein Terminal oder einen Client wie Putty eingegeben werden:

 

1.  InfluxDB installieren

Fügt zuerst die entsprechenden Repositories hinzu:

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Aktualisiert sowie installiert die entsprechenden Pakete:

sudo apt update
sudo apt install -y influxdb telegraf

Ich empfehle euch, InfluxDB mit dem Bootvorgang eures Systems zu starten:

sudo systemctl unmask influxdb.service
sudo systemctl start influxdb.service
sudo systemctl enable influxdb.service
sudo systemctl start telegraf.service
sudo systemctl enable telegraf.service

Um eure InfluxDB zu nutzen, startet ihr einfach den Influx Client und richtet eine Datenbank und einen User ein. In diesem Beispiel richten wir eine Datenbank für Telegraf Daten mit einem User für Telegraf und Grafana ein.
Ersetzt Name und Passwort durch eure eigene Infos.

Client starten:
influx

Datenbank und User einrichten:
create database telegraf_b_one
use telegraf_b_one

create user telegraf with password ''
grant all on telegraf_b_one to telegraf
create user grafana with password ''
grant read on telegraf_b_one to grafana

Zuletzt prüfen wir noch, ob alles richtig angelegt wurde und beenden den InfluxDB Client. Hierzu gebt ihr folgende Befehle in euer Terminal ein:

show databases
show users
show grants for telegraf
show grants for grafana

 

quit

Bevor wir weitermachen, müsst ihr in der Konfiguration von Telegraf noch ein paar kleine Änderungen vornehmen. Hierzu öffnet ihr die telegraf.conf in einem Editor wie bspw. nano:

sudo nano /etc/telegraf/telegraf.conf

Nun sucht ihr im Bereich „Configuration for sending metrics to InfluxDB“ nach den folgenden Einträgen und editiert sie entsprechend. Die Anmeldedaten “username” und “password” ersetzt ihr durch die von euch oben gewählten Infos.
database = "telegraf_b_one" # required
username = "admin"
password = "password"

Denkt daran, dass bei allen geänderten Parametern die Auskommentierung durch das „#“ herausgelöscht werden muss und vergesst am Schluss nicht zu speichern.

 

2. InfluxDB als Datenquelle in Grafana hinzufügen

Ihr müsst nun noch eure InfluxDB in Grafana bekannt machen. Ihr habt in einem älteren Artikel gelernt wie ihr Grafana installiert und einrichtet.

Hierzu geht ihr, wie bereits im Artikel “Grafana Howto: Eine Datenbank als Datenquelle anbinden” erläutert, in den Einstellungsbereich von Grafana und fügt eine neue Datenquelle hinzu. Hierzu einfach in das Suchfeld “InfluxDB” eingeben und in der Trefferliste auswählen.

Als nächstes müsst ihr die URL und den Port eurer Datenbank sowie den User angeben. URL und Port, sind soweit ihr dies nicht geändert habt: 0.0.0.0:8086. Falls ihr eure Datenbank in einem Docker Container betreibt, müsst ihr die IP des Containers verwenden.

Nun müsst ihr noch angeben, welche Datenbank innerhalb von InfluxDB verwendet werden soll. In unserem Beispiel ist dies “telegraf_b_one” mit dem User “telegraf”.

Grafana: InfluxDB als Datenquelle hinzufügen und konfigurieren

Zuletzt noch speichern und testen. Wenn die grüne Hinweismeldung „Data source is working“ erscheint, war die Einrichtung erfolgreich.

Typische Fehler, warum der Test fehlschlägt, sind Typos in der URL oder dem Port, nicht gestartete InfluxDB Instanz oder falsche User credentials.
Falls ihr InfluxDB und Grafana in Docker Containern betreibt ist häufig die IP und Port die Fehlerquelle. Prüft dies in eurer Docker Konfiguration.

 

3. Telegraf MQTT Subscriber einrichten

Nachdem wir nun eine Datenbank für Telegraf eingerichtet haben, schauen wir uns nun an, wie wir Daten über Telegraf in unsere InfluxDB bekommen. Als Übertragungsstandard nutzen wir MQTT. Unsere LoRa-Nutzdaten werden von der B.One Middleware nach der Einrichtung der Weiterleitung wie im Blog-Artikel „Weiterleitungsmöglichkeiten B.One Middlware“ beschrieben an unseren Broker gepublished, welchen wir nun über telegraf subscriben. Dabei subscriben wir das topic „/devices/+/up“, welches von allen Geräten (Wildcard „+“) eine Zusammenfassung des kompletten Telegramms beinhaltet.

Zur Einrichtung müssen wir das Topic sowie die Zugangsdaten zum Broker in der telegraf.conf hinterlegen. Hierzu öffnet ihr die Datei wieder im Editor:

sudo nano /etc/telegraf/telegraf.conf

Ändert im Bereich „Read metrics from MQTT topic(s)“ folgende Einträge mit euren Informationen ab:

Auskommentierung über „#“ vor [[inputs.mqtt_consumer]] herauslöschen, um den MQTT-Subscriber zu aktivieren

servers = [“tcp://xxxxxxxx:port]  --> URL und Port eures Brokers
topics = [“xxxxxx”] --> die Topics, die euch euer Broker für den Sensor bereitstellt
username = “my_user” --> Username zur Authentifizierung gegenüber Broker
password = “my_password” --> Passwort zur Authentifizierung gegenüber Broker
data_format = “json” --> Datenformat

Die oben genannten Infos sind die in jedem Fall zu bearbeitenden Parameter. Abhängig von eurem Broker und euren Anforderungen sind ggf. noch weitere Parameter erforderlich.
Auch hier muss bei jedem geänderten Parameter das „#“ gelöscht werden.

Am besten beendet ihr nach dem Speichern der Datei Telegraf und InfluxDB nochmals und startet die Dienste wieder. Entweder durch einen reboot eures Systems oder mithilfe dieser Eingaben im Terminal:
sudo systemctl stop influxdb.service
sudo systemctl stop telegraf.service

Wenn beide Systemdienste gestoppt sind, könnt ihr diese über folgende Befehle wieder starten:
sudo systemctl start influxdb.service
sudo systemctl start telegraf.service

Wenn ihr alles richtig gemacht habt, dürfen keine Fehlermeldungen beim Start der Systemdienste auftreten. Sobald einer eurer Sensoren nun Werte übermittelt, werden diese über den MQTT Broker an eure Installation weitergeben und in der InfluxDB gespeichert.

 

4. Daten in Grafana visualisieren

Nachdem die Daten nun in die Datenbank geschrieben werden, schauen wir uns an, wie wir diese mithilfe von Grafana visualisieren können. Hierzu erstellen wir in einem Dashboard ein neues Panel.

  1. Als Data source wählen wir die zuvor erstellte InfluxDB
  2. Sobald die ersten Werte über MQTT empfangen werden, legt die Datenbank automatisch das measurement mqtt_consumer an. Dieses wählen wir unter select measurement aus.
  3. Wir möchten als Beispiel die Temperatur eines bestimmten Gerätes visualisieren. Da jedes Gerät über ein eigenes topic kommuniziert, klicken wir hinter dem where auf + und wählen topic aus. Als tag value wählen wir das topic, das die DevEUI des gewünschten Gerätes beinhaltet.
  4. Nach einem Klick auf value innerhalb von field(value) bekommen wir eine Auswahl an Werten, die von den Sensoren übertragen werden. Hier einfach das gewünschte field auswählen – in unserem Beispiel payload_fields_temperature
  5. Da wir die Werte nicht mit einem mathematischen Operator weiterverarbeiten möchten, klicken wir auf mean() und entfernen es über remove
  6. Auch die Gruppierung entfernen wir, indem wir auf time und anschließend auf remove klicken
  7. Unter Alias können wir die Beschriftung in der Legende angeben. In unserem Beispiel wollen wir den Graphen mit temperature beschriftet haben
Grafana: Daten aus InfluxDB in Dashboard visualisieren

Wenn alle Einstellungen gesetzt und bereits Daten aufgelaufen sind, bekommt man den entsprechenden Verlauf direkt angezeigt und kann (falls gewünscht) beginnen, das Panel weiter an die eigenen Anforderungen anzupassen.

Grafana: InfluxDB Daten in Dashboard visualisieren – Temperatur-Graph

Ihr wisst nun, wie ihr eine InfluxDB vorbereiten könnt, um Daten aus Telegraf entgegen zu nehmen. Zusätzlich haben wir exemplarisch einen MQTT Broker angebunden und einen Beispielverlauf in Grafana visualisiert. In einem weiteren Artikel erkläre ich euch bald das „Schweizer Taschenmesser“ Telegraf etwas genauer und stelle euch mein aktuelles Projekt vor. Schaut also bald wieder hier vorbei! 😉

Empfohlen3 EmpfehlungenVeröffentlicht in B.One Middleware, Bedienungshilfen, Grafana, Visualisierung

Zum Thema passende Artikel

Kommentare