Mit Grafana kannst du recht einfach, und dennoch sehr umfangreich, dein eigenes Raspberry Pi Monitoring über eine Web-GUI erstellen und wichtige Service / Werte überwachen. Das Ganze installieren wir als Container unter Docker und verwalten dies mit Portainer – einer Weboberfläche um Container einfacher verwalten zu können. Weiterhin nutzen wir die Datenbank InfluxDB und zum sammeln der Daten Telegraf.
Ich habe alles selbst durchgeführt und mir mein System nicht zerschossen oder sonst irgendwelche negativen Auffälligkeiten bemerkt.
Aber dennoch… Backups sind immer gut…. Ich übernehme keine Haftung für irgendwelche Schäden am System, der Hardware oder der Katze….
Raspberry Pi Monitoring – Grafana und Portainer – Was brauchen wir?
Ich beziehe mich hier, wie sooft, auf eine Installation auf einem Raspberry Pi. Unter Linux-Umgebungen können die Schritte teilweise etwas anders sein. Grundsätzlich sollte man diese aber alle übernehmen können. Damit wir ein komplettes Raspberry Pi Monitoring erstellen können benötigen wir:
- Raspberry Pi (oder eine Linux Umgebung)
- installierte Docker-Umgebung
- installierter Portainer-Container (nicht zwingend erforderlich, hierüber installiere ich aber den Container für Grafana)
- ein Grafana Docker Image
- InfluxDB Docker Image
- Telegraf
Verzeichnisse für persistente Daten anlegen
Alle Container haben eins gemeinsam: Sobald sie beendet wurden – egal ob durch einen Stromausfall oder normalen Beenden des Dienstes – verlieren sie ihre Daten.
Sie starten immer wieder mit den Parametern und Inhalten aus ihrem Image.
Außer man lässt sie auf einem festen Platz ihre Daten ablegen. Und dies bereiten wir jetzt vor.
Du loggst dich auf deinem Raspberry Pi mit sudo Rechten ein und erstellst einen Ordner. Wo ist im Prinzip total egal, da du beim Bereitstellen des Containers diesen Pfad fest mit angeben wirst.
Ich lege solche Ordner immer unter /opt an. Da wir für influxdb und Grafana feste Plätze benötigen, richten wir gleich beide ein:
sudo mkdir /opt/influxdb sudo mkdir /opt/grafana sudo chmod 775 /opt/influxdb/ /opt/grafana/
InfluxDB und Grafana Container Installation
Wie du Docker und Portainer installieren bzw. einrichten kannst, habe ich in einem eigenen Artikel erklärt. Diesen findest du bei den oben genannten Punkten oder direkt: Raspberry PI – Docker ohne Probleme installieren.
Da wir InfluxDB und auch Grafana als Container auf unserem Raspberry Pi laufen lassen wollen, benötigen wir das entsprechende Image dazu. Auch hier wird es wieder verschiedene Wege geben um ein Image zu erhalten.
Ich nutze dafür: https://hub.docker.com/.
Einfach in dem Suchfeld eintragen was man gerne finden möchte, und Enter drücken:
Es folgen sehr viele Ergebnisse….und das wird bei fast allen Images so sein, die du hier suchen wirst.
Für einen Container auf einem Raspberry Pi ist es wichtig, dass der TAG „arm“ bzw. „arm64“ enthalten ist.
Wir suchen also einmal nach InfluxDB, klicken das erste offizielle Image an und scrollen dann sehr weit nach unten in der Beschreibung:
Ich nutze hier die 1.8er Version – aus irgendeinem Grund bekomme ich die 2er nicht so zu laufen wie bisher. Da ich aber aktuell nicht soviel Zeit zum ausprobieren habe, bleibe ich bei 1.8. Die läuft zum Glück auch stabil.
Was wir brauchen und uns merken müssen ist:
- influxdb:1.8
- 8086
- /var/lib/influxdb
Für das Raspberry Pi Monitoring brauchen noch ein Image für Grafana, also suchen wir nach Grafana:
In meinem Fall steht der „offizielle Grafana docker container“ an erster Stelle:
Ein Kick auf das entsprechende Ergebnis und wir werden auf eine weitere Seite geleitet. Hier finden wir auf der rechten Seite einen Docker-Pull-Befehl (brauchen wir jetzt nicht) um den Container über das Terminal laden zu können.
Weiterhin wirst du weiter unten in der Regel Changelogs und/oder Erklärungen zu dem Image finden. In diesem Fall stehen hier lediglich die Changelogs und wie man Grafana mit einem Port bindet. Dazu später aber mehr.
Was wir brauchen und uns merken müssen ist:
- grafana/grafana
- 3000
- /var/lib/grafana (was leider nur auf der Grafana Seite direkt steht und nicht hier)
InfluxDB Container über Portainer einrichten
Starte, am besten in einem neuen Tab, deine Portainer-Umgebung (https://IP-DES_RASPBERRY:9443) und logge dich ein.
In der linken Menüseite wähle den Punkt „Containers“ und dann klicke auf den Button “ + Add container„:
Lass dich von den Einstellungen nicht erschlagen. Nicht alle benötigen wir, und alle anderen werden nach und nach klarer.
- Als Erstes geben wir unserem Container einen Namen(1): influxDB
- Dann suchen wir das entsprechende Image (2) bei „DockerHub“ : influxdb:1.8
- Jetzt klickst du auf den Button publish a new network port(3) und trägst bei Host(4) und Container(5) jeweils den Port 8086 ein
Unter dem Punk „Command & logging“ solltest du für die Console „Interactive & TTY“ auswählen.
Etwas weiter unten klickst du jetzt auf „Volumes(1)„, dann auf „map additional volume(2)“ sowie auf den Button „Bind(3)„.
Du erinnerst dich noch an den Pfad, den wir auf der hub.docker Seite unter influxDB in der Beschreibung gesehen haben?
Denn diesen müssen wir jetzt bei „container(4)“ eintragen: /var/lib/influxdb.
Bei „Host(5)“ kommt jetzt das Gegenstück dazu rein, nämlich der Ordner, den wir für die persistenten Daten auf unserem Raspberry angelegt haben: /opt/influxdb
Im Reiter „Restart policy“ geben wir noch an, wie sich unser Container verhalten soll, falls der Raspberry mal neu startet oder der Container selbst sich mit einem Fehler beendet hat. Hier wählen wir „Always“ – er soll also immer wieder selbst neu starten.
Nun haben wir soweit alles angegeben was wir benötigen und können, wieder etwas weiter oben, auf den Button „Deploy the container“ klicken.
Das Ganze dauert dann ein wenig, da zu erst das Image heruntergeladen, entpackt und der Container entsprechend angelegt werden muss. Beim nächsten Deploy des Containers würde es deutlich schneller gehen:
Hiermit hast du jetzt influxDB erfolgreich als Container gestartet. Prüfen kannst du das natürlich auch. Im Menüpunkt Containers wirst du in der Übersicht einen neuen influxDB Container im Status running sehen. Schaue auch ruhig einmal in die Logs.
Grafana Container über Portainer einrichten
Im Prinzip wiederholen wir jetzt die Schritte wie unter dem Punkt InfluxDB Container über Portainer einrichten beschrieben ist.
Natürlich tragen wir andere Parameter ein 😉
Beginnen wir mit „+ Add container“ und gehen dann die Punkte von 1 – 11 durch. Ansonsten ließ weiter oben nochmal, falls du genauere Schritten sehen magst.
- (1) – Name des Containers: „Grafana„
- (2) – Name des Image: „grafana/grafana„
- (3) – Anklicken um neue Ports eingeben/binden zu können
- (4) – Port des Hosts(Raspberry): 3000
- (5) – Port des Containers: 3000
- (6) – Button „Volumes“ anklicken
- (7) – Den Button bei Volume mapping klicken damit wir die Pfade eingeben können
- (8) – Button „Bind“ anklicken
- (9) – Pfad des Containers: /var/lib/grafana
- (10) – Pfad auf dem Host(Raspberry) dazu: /opt/grafana
Im Reiter „Restart policy“ geben wir jetzt noch an, wie sich unser Container verhalten soll, falls der Raspberry mal neu startet oder der Container selbst sich mit einem Fehler beendet hat. Hier wählen wir „Always“ – er soll also immer wieder selbst neu starten.
- Unter dem Punk „Command & logging“ solltest du für die Console „Interactive & TTY“ auswählen.
- (11) – Button „Deploy the container“ klicken
Im Idealfall solltest du nach einer kurzen Ladezeit auf deiner Gesamtübersicht Grafana im Status running sehen können:
Du kannst es auch direkt testen, gib einfach die IP deines Raspberrys, gefolgt von dem Port 3000 im Browser ein und siehe was passiert:
http://IP-DEINES-RASPBERRY:3000
Mit dem Default User und Passwort (admin/admin) kannst du dich einloggen und direkt das Passwort ändern.
Jetzt haben wir soweit alles für unser Raspberry Pi Monitoring installiert. Es fehlt aber noch eine Kleinigkeit, was wir im nächsten Stepp direkt auf unserem Raspberry Pi einrichten werden.
Außerdem fehlt uns ja noch die Konfiguration, damit Grafana weiß, woher es die Daten erhalten kann. Auch dies werden wir gleich noch erledigen.
Aber jetzt hast du dir eine Pause verdient, besorge dir einen Kaffee oder Wasser oder sowas, atme durch und dann ab in den Endspurt 🙂
Verpasse keine neue Themen und Videos mehr
Trage dich in den Newsletter ein und erhalte sporadisch Neuigkeiten zu DarkWolfCave und neuen Themen.
Versprochen: Es werden keine Daten verkauft und ich werde dein Postfach nicht ständig zuspammen…
Newsletter & Updates
Trage dich in den Newsletter ein und erhalte sporadisch Neuigkeiten zu DarkWolfCave und neuen Themen.
Versprochen: Es werden keine Daten verkauft und ich werde dein Postfach nicht ständig zuspammen…
telegraf auf dem Raspberry Pi installieren
Willkommen zurück! Na?! Kopf wieder etwas abgekühlt und aufnahmefähig? 🙂
Dann lass uns direkt weitermachen und die letzten paar Dinge erledigen.
Was jetzt kommt, wird wieder direkt auf dem Raspberry installiert. Also nicht als Container.
Dazu wie immer per SSH mit deinem pi verbinden.
Damit wir Zugriff auf die Quelle von influxDB haben, um uns Pakete herunterladen zu können, besorgen wir uns einen Key und speichern ihn auf dem Raspberry:
wget -q https://repos.influxdata.com/influxdata-archive_compat.key cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list sudo rm -f /etc/apt/trusted.gpg.d/influxdb.gpg
Dann aktualisieren wir unsere Quellen und installieren apt-transport-https, was wir für den weiteren Schritt benötigen.
sudo apt-get update && sudo apt-get install apt-transport-https
Um später auch Updates erhalten zu können, fügen wir noch einen Eintrag in unserer Paketquelle hinzu:
sudo echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
Final installieren wir endlich Telegraf:
sudo apt-get update && sudo apt-get install telegraf
Es sollte jetzt von repos.influxdata.com das Paket für telegraf heruntergeladen und installiert werden.
Für mehr Informationen, und weiterführende Konfigurationen, schaue dir die Installationsanleitung von Telegraf an.
telegraf konfigurieren
Hinweis zur telegraf.conf und influxDB1.8 / _v2
Die neueren Versionen haben in der telegraf.conf auch die Output für influxdb_v2.
Achte da drauf, dass du hier die richtigen Werte ausfüllst bzw. mit # auskommentierst. Also wenn du die influxDB1.8 benutzen willst, am besten bei Outputs.influxdb_v2 alles mit einer # versehen und bei dem ohne _v2 entsprechend deine Daten eintragen.
Uns fehlen noch ein paar Konfigurationen, damit wir für unser Raspberry Pi Monitoring auch alle benötigten Informationen bekommen, und in unserer Datenbank speichern können.
Dafür öffnen wir eine config Datei von telegraf:
sudo nano /etc/telegraf/telegraf.conf
Viel Spaß beim scrollen…. ja diese Datei ist WIRKLICH gefühlt unendlich lang. Aber keine Sorge, wir machen da nicht sehr viel mit und müssen es auch für unsere Anforderungen nicht.
Suche mal nach „OUTPUT PLUGINS“ und dann nach [[outputs.influxdb]]. Unter diesem Punkt geben wir jetzt an, wo sich unsere influxdb-Datenbank befindet.
Bei dem letzten auskommentierten (#) urls Eintrag entfernen wir einfach die Raute(#) und können es im Prinzip so lassen. Die 127er IP ist der localhost. Da die influxdb ja direkt auf dem Raspberry läuft, kann diese so erreicht werden.
Falls du noch einen zweiten Raspberry hast, würdest du bei diesem hier die IP des Hosts eingeben, auf dem die influxdb-Datenbank läuft.
Ein wenig unter diesem Eintrag entfernen wir auch die Raute(#) vor dem „database = “ und geben unserer Datenbank einen Namen.
Diese wird dann später automatisch angelegt und wir brauchen uns da nicht selbst drum kümmern.
Ich habe meine hier „raspberry_live“ genannt, damit ich später weiß von welchem meiner raspberrys die Daten sind. Bei einem weiteren pi würde ich zum Beispiel „raspberry_test“ oder sowas nehmen.
Ich greife jetzt einen Schritt vor, denn ich nutze für mein Raspberry Pi Monitoring bei Grafana ein fertiges Dashboard. Und der Entwickler gibt noch ein paar Parameter an, die man in die telegraf.conf eintragen sollte. Daher scrollen wir jetzt sehr weit nach unten bis du „INPUT PLUGINS“ sehen kannst. Direkt da drunter fügst du dann folgendes ein:
#In order to monitor both Network interfaces, eth0 and wlan0, uncomment, or add the next: [[inputs.net]] [[inputs.netstat]] [[inputs.file]] files = ["/sys/class/thermal/thermal_zone0/temp"] name_override = "cpu_temperature" data_format = "value" data_type = "integer" [[inputs.exec]] commands = ["/opt/vc/bin/vcgencmd measure_temp"] name_override = "gpu_temperature" data_format = "grok" grok_patterns = ["%{NUMBER:value:float}"]
Jetzt speichere die Datei und verlasse sie. Denn hier sind wir erstmal mit fertig.
Damit wir auf dem Raspberry auch auf die Werte von GPU usw. zugreifen dürfen, müssen wir den telegraf User noch in eine Gruppe hinzufügen:
sudo usermod -G video telegraf
Noch haben unsere Änderungen keine Wirkung, daher starten wir den Service telegraf einmal neu:
sudo service telegraf restart
Ab jetzt sollten Daten gesammelt und in die Datenbank geschrieben werden.
Was weiterhin fehlt ist das Dashboard, damit wir auch etwas sehen, und die Konfiguration zur Datenbank, damit Grafana auch weiß woher die Daten kommen sollen!
InfluxDB mit Grafana verbinden
Wir loggen uns jetzt wieder in der Grafana WebGui auf dem Raspberry ein (IP-DEINES_RASPBERRYS:3000).
Hier wählen wir auf der linken Seite das Zahnrad und „Data sources“ aus, dann klicken wir auf den Button „Add data source“ und sagen zum Schluss wir wollen eine InfluxDB hinzufügen:
Jetzt müssen wir nur noch ein paar Angaben zu der Datenbank machen. Damit es einfacher zu handhaben ist, verzichte ich hier vollkommen auf Username / Passwörter. Bedeutet die Datenbank ist frei zugänglich. Da dies alles nur in unserem Netzwerk läuft, ist das kein Problem. Bedenke aber das man unter anderen Umständen immer User und Passwörter vergeben sollte.
Zurück zu unseren Einstellungen.
Unter Name kannst du einen Namen vergeben der dann später als Quelle in deinem Dashboard auswählbar ist.
Im Bereich HTTP und URL gibst du die IP deines Raspberrys ein auf dem die Datenbank läuft, gefolgt von dem Port 8086
Die restlichen Einstellungen können so bleiben.
Etwas weiter unten musst du noch den Datenbank Namen angeben aus dem die Daten gelesen werden sollen. Du erinnerst dich? Wir haben diesen weiter oben in die telegraf.conf eingetragen. In meinem Fall als „raspberry_live„.
Über den Button „Save & test“ prüfen wir die Verbindung. Ein grüner Haken und „Data source is working„, zeigt uns an, das alles funktioniert hat:
Dashboard für Grafana besorgen
Was wäre ein Raspberry Pi Monitoring ohne ein Dashboard?
Damit wir bei Grafana ein solches sehen können, müssten wir uns selbst eins erstellen oder – was ich hier bevorzuge – ein fertiges Dashboard importieren.
Du kannst dir auf der Grafana Labs Seite alle verfügbaren Dashboards ansehen und entsprechend suchen. Wir wollen ja ein speziell für einen Raspberry Pi erstelltes nutzen, daher suchen wir auch nach „Raspberry“.
Ich denke du wirst dann bei deiner Suche direkt auf dieses hier treffen: Raspberry Pi Monitoring
Dieses nehmen wir auch direkt. Wie?! Ganz einfach: Kopiere dir die ID oben Rechts „10578„.
Dann öffnest du bei dir deine Grafana Umgebung (IP-DEINES_RASPBERRYS:3000) und gehst über den Menüpunkt „Dashboards“ auf „+ Import„:
Hier trägst du die gerade kopierte oder gemerkte ID des Dashboards ein (10578) und betätigst den „Load“ Button.
Jetzt könntest du den Namen des Dashboards ändern und musst auf jeden Fall die Verbindung zu den Daten – also zu der influxDB – angeben.
Diese hatten wir ja gerade eingerichtet und du solltest sie in dem Drop-Down-Feld auswählen können. In meinem Fall „Raspberry Pi Monitoring“
Ist alles eingestellt, klicken wir auf den „Import“ Button und sehen einige Sekunden später bereits unser Dashboard mit Daten.
Ab jetzt kannst du dich einfach mal in Ruhe durch alle Punkte klicken und dir das Dashboard anschauen. Je länger dein Raspberry läuft, je mehr Daten erscheinen. Oben Rechts kannst du die Aktualisierungsrate einstellen. Default ist 1 Minute.
Herzlichen Glückwunsch, dein Raspberry Pi Monitoring ist somit fertig und funktionsfähig. Viel Spaß damit!