Raspberry Pi Monitoring kostenlos – Grafana, InfluxDB mit Portainer und Docker installieren
Herzlich willkommen zum heutigen Blogpost über Raspberry Pi Monitoring! In diesem Artikel zeige ich dir, wie du kostenlos Grafana, InfluxDB mit Portainer und Docker auf deinem Raspberry Pi installieren kannst.
DarkWolfCave.de
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.
Lass uns direkt loslegen und dein Raspberry Pi in ein leistungsstarkes Monitoring-System verwandeln.
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
Auf dieser Hardware laufen meine Umgebungen
Bei mir gibt es mehrere sogenannte »Umgebungen«, die ich benutze.
Zum einen meine »Live« oder auch »Produktion« Umgebung, auf der alles läuft, was ich in meinem Netzwerk so benötige.
Dann gibt es noch Umgebungen für unterschiedliche Szenarien: ein Labor (LAB), eine Entwickler (DEV) und eine zum finalen Testen (UAT).
Hardwaretechnisch sind aber alle fast gleich ausgestattet, da ich mit diesen Kombinationen bisher nie Probleme hatte.
Lediglich setzt meine neue Live-Umgebung erstmalig auf eine NVMe-SSD.
Werbung
Aktuelle Produktions-Umgebung (live)
Vorschau | Produkt | Preis | |
---|---|---|---|
Raspberry Pi 5 8 GB | 91,11 EUR | Bei Amazon kaufen | |
offizieller Raspberry Pi 5 USB-C Netzteil 27W, USB-C… | 18,90 EUR 11,30 EUR | Bei Amazon kaufen | |
GeeekPi Raspberry Pi 5 Aluminiumgehäuse mit Official… | 25,99 EUR 22,99 EUR | Bei Amazon kaufen | |
GeeekPi N04 M.2 M-Key NVMe SSD Shield für Raspberry Pi… | 12,95 EUR | Bei Amazon kaufen | |
Crucial P3 Plus SSD 1TB M.2 PCIe Gen4 NVMe Interne SSD,… | 69,99 EUR | Bei Amazon kaufen | |
SanDisk Extreme 32 GB microSDHC Memory Card + SD… | 14,99 EUR 10,49 EUR | Bei Amazon kaufen | |
Transcend 32GB kleiner und kompakter USB-Stick 3.1 Gen… | 14,99 EUR 12,09 EUR | Bei Amazon kaufen | |
UGREEN USB C 312MB/S Kartenleser SD 4.0 Kartenleser USB… | 25,99 EUR | Bei Amazon kaufen |
Letzte Aktualisierung am 2024-12-04 (Preise können abweichen) / Infos zu Affiliate Links / Bilder von der Amazon Product Advertising API
Affiliate – Links
DarkWolfCave.de ist Teilnehmer des Amazon-Partnerprogramm, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.
Werbung
Test-Umgebungen (UAT/DEV/LAB)
Letzte Aktualisierung am 2024-12-04 (Preise können abweichen) / Infos zu Affiliate Links / Bilder von der Amazon Product Advertising API
Affiliate – Links
DarkWolfCave.de ist Teilnehmer des Amazon-Partnerprogramm, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.
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 vollkommen 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
Du wirst hier einen groben Überblick finden.
Allerdings biete ich dir auch noch etwas mehr Support an:
- Du benötigst persönlichen Support
- Du möchtest von Beginn an Unterstützung bei deinem Projekt
- Du möchtest ein hier vorgestelltes Plugin durch mich installieren und einrichten lassen
- Du würdest gerne ein von mir erstelltes Script etwas mehr an deine Bedürfnisse anpassen
Für diese Punkte und noch einiges mehr habe ich einen limitierten
VIP-Patreon Tarif
eingerichtet. Falls er dir dort zurzeit nicht angeboten wird,
kontaktiere mich bitte über Discord und wir finden eine Lösung!
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 so viel Zeit zum Ausprobieren habe, bleibe ich bei 1.8. Die läuft zum Glück auch stabil.
Was wir benötigen und uns merken müssen, ist:
- influxdb:1.8
- 8086
- /var/lib/influxdb
Für das Raspberry Pi Monitoring benötigen 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 so weit 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 zuerst 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 noch einmal nach, falls du genauere Schritte 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 so weit 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 so was, atme durch und dann ab in den Endspurt 🙂
Trage dich in den Newsletter ein!
Sie sehen gerade einen Platzhalterinhalt von Brevo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationentelegraf 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
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 darauf, 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.
Dank dem User Thomas (siehe Kommentare), gibt es noch einen guten Hinweis. Sollte bei dir vor dem [[outputs.influxdb]] eine Raute (#) stehen, musst du diese bitte auch entfernen.
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 erst einmal 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, dass 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, dass 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!
FAQ´s
Raspberry Pi Monitoring bezieht sich auf die Überwachung und Aufzeichnung verschiedener Metriken und Daten auf einem Raspberry Pi, um dessen Leistung, Ressourcennutzung und andere wichtige Parameter zu überwachen. Dies ist wichtig, um die Stabilität des Systems zu gewährleisten, Probleme frühzeitig zu erkennen und Leistungsverbesserungen vorzunehmen.
Wir verwenden Grafana, InfluxDB, Portainer und Docker. Grafana zeigt die Daten schön in einer Web-GUI an, InfluxDB speichert die Daten, Portainer hilft uns bei der Verwaltung der Docker-Container und Docker macht es einfach, die Anwendungen auf dem Raspberry Pi zu installieren.
Docker-Container sind praktisch, um Anwendungen isoliert voneinander laufen zu lassen. Sie machen die Installation und Verwaltung der Anwendungen einfacher und sorgen dafür, dass sie auf verschiedenen Systemen gleich laufen.
Durch die Verwendung von persistenten Datenverzeichnissen. Diese sorgen dafür, dass deine Daten auch nach einem Neustart oder Ausfall des Raspberry Pi nicht verloren gehen.
Telegraf sammelt Daten von verschiedenen Teilen deines Raspberry Pi, z.B. die CPU-Temperatur oder Netzwerkdaten, und sendet sie an InfluxDB.
Grafana bietet eine einfache Möglichkeit, deine Daten anzusehen und zu analysieren. Du kannst benutzerdefinierte Dashboards erstellen und Trends überwachen.
Natürlich! Über eine entsprechende Patreon-Mitgliedschaft biete ich dir einen exklusiven und persönlichen Zugang in Discord an.
Hier stehe ich dir dann für deine Fragen zur Verfügung.
Gerne können wir auch in einem Discord-Call direkt an deinem PC alles Schritt für Schritt durchgehen.
Wenn du also detaillierte Einblicke in meine Blog-Reihe “Snippets aus der Praxis” oder spezifische Fragen zu WordPress, Webentwicklung oder anderen Themen hast, stehe ich dir über die entsprechende Patreon-Mitgliedschaft persönlich zur Verfügung.
Du hast weitere Fragen oder benötigst Hilfe? Gerne versuche ich im Rahmen meiner Möglichkeiten dich zu unterstützen. Dafür kannst du hier die Kommentar-Sektion (nicht vergessen Antworten zu abonnieren) nutzen oder du schaust auf meinem Discord-Kanal vorbei.