Raspberry Pi, Protokollierung
Um die Systemdaten der unterschiedlichen Raspberries im Netzwerk zu erfassen, deren Laufzeit, Resourcen, Basiskonfiguration etc. zu prokollieren und den jeweiligen Status einsehen zu können werden verschiedene Scripte verwendet, welche die entsprechnenden Daten einem Logserver zu Verfügung stellen. Ausfälle, Restarts, Plattenplatzengpässe und Netzwerkstörungen werden ebenso erfaßt und mit aufgezeichnet. In bestimmten Fällen erfolgt eine Email an einen besonderen Email-Empfänger (das Postfach wird nur für diesen Zweck verwendet).
Als Basis für die Protokollierung dienen folgende Tool/Programme:
Raspberry Pi Modell
cat /sys/firmware/devicetree/base/model
Modell- und Revisionsnummer des Boards
cat /proc/cmdline | awk -v RS=" " -F= '/boardrev/ { print $2 }'
Aktivierte Video-Codecs
vcgencmd codec_enabled {CODEC}
Für "codec_enabled" gibt es die folgenden Parameter: H264, MPG2, WVC1, MPG4, MJPG und WMV9.
Hardware-Informationen
Um umfangreiche Hardware-Informationen zu bekommen eignet sich das Tool "lshw", dass man in der Regel nachträglich installieren muss.
sudo apt-get install lshw
Die vollständige Liste der Hardware-Informationen oder die seitenweise Darstellung:
sudo lshw
sudo lshw | less
Welcher Raspberry Pi kommt zum Einsatz?
sudo lshw | grep "product:" -m 1
Informationen über die Netzwerk-Schnittstelle
sudo lshw | tail -n 9 | grep -iE "size|capacity|capabilities|speed"
Systemwerte mit "vcgencmd" auslesen
Die für den Raspberry Pi installierte Firmware bringt ein kleines Programm namens "vcgencmd" mit. Damit lassen sich auf der Kommandozeile Systemwerte und Hardware-Informationen auslesen. Das Tool liefert keine umfassenden Informationen, sondern hauptsächlich Informationen über den Prozessor. Schauen wir uns an was man mit diesem kleinen Helfer erfahren kann.
vcgencmd commands
Da man mit den einzelnen Kommandos nichts anfangen kann, gehe ich anschließend einige davon der Reihe nach durch.
Die aktuelle Konfiguration lasse ich mir wie folgt ausgeben:
vcgencmd get_config int
Die aktuelle Firmware-Version:
vcgencmd version
Informationen über die Boot-Konfiguration
Die Boot-Konfiguration des Raspberry Pi befindet sich in der Datei "/boot/config.txt".
cat /boot/config.txt
Vorsicht: Hier sollte man nur etwas ändern, wenn man wirklich weiß, was man tut. Fehlkonfigurationen können dazu führen, dass der Raspberry Pi unbrauchbar wird.
Viele dieser Daten sind aber eigentlich von untergeordnetem Interesse. Ich habe daher ein Script erstellt welches nur die "Eckdaten" des Systems wiedergibt. Dieses Script erstellt folgende Ausgabe:
Informationen über laufende Prozesse
Die eigenen Prozesse anzeigen, die im aktuellen Terminal gestartet sind:
ps
Alle im Hintergrund laufenden Prozesse anzeigen:
ps aux
ps auxw
Dieses Kommando zeigt die Prozesse aller Nutzer (a), mit Namen (u), auch die Prozesse, die nicht an ein Terminal gebunden sind (x) und nutzt dafür die volle Breite (w).
Variante in der Baumdarstellung, um die Abhängigkeiten der Prozesse erkennen zu können:
ps axjf
Liefert eine übersichtlichere Darstellung mit weniger Details:
pstree
Prozesses eines bestimmten Users anzeigen:
ps -fu {USERNAME}
Bash-Script zur Protollierung
Auf der Basis der oben genannten Werkzeuge habe ich folgendes Bash-Script erstellt, welches die relevanten Daten (Begründungen/Absichten sind in dem Script kommentiert) ermittelt und in einem Logfile zusammengefaßt. Dieses Logfile wird auf einem zentralen Logserver weiterverarbeitet und im Bedarfsfall/Störungsfall wird eine Email erstellt und versandt.
Visualierung
Der Status AKTIV, STÖRUNG, INAKTIV wird auf einer Website des Protokollservers grafisch einfach aufbereitet, diese Website wird dann regelmäßig an den Webserver übermittelt und kann dort eingesehen werden. Die Protokolldateien werden aus einer MySql/MariaDB eingelesen, welche zuvor von den einzelnen Raspberries über das Prokollscript mit den entsprechenden Daten versorgt wird.
Datenbankprotokollierung
Hier der Aufbau der Protokolltabelle in der MySql/MariaDB:
EINFÜGEN ERFORDERLICH
Script um Auslesen der Protokolldatenbank und Übertragung auf den Webserver
EINFÜGEN ERFORDERLICH