Commentum

Der Einfall, die Lüge, die Erdichtung

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


Zurück


E-Mail
Infos