Überwachung der heimischen Infrastruktur mit MUNIN

Vor gut 20 Jahren hatte ich ein Desktop-System im Einsatz, irgendwann kam dann ein Laptop und ein kleiner Server hinzu. Heute zähle ich im heimischen Netzwerk 15 Geräte die irgendeine Aufgabe erfüllen und nochmals bis zu zehn Endsysteme, welche sich im Netzwerk tummeln und da sind die Aktoren und Sensoren des Hausautomatisierungs-Systems noch nicht mit einbezogen.

Wenn mal ein Handy der Kinder keine Verbindung mit dem Internet aufbauen kann, ist dies kein Beinbruch, wenn aber der heimische Cloud- oder IMAP-Dienst nicht mehr läuft kann das vielleicht schon etwas unangenehmer. Ganz nach Murphy «Was passieren kann wird passieren» fallen diese Dienste immer zum ungünstigsten Zeitpunkt aus. Eine Überwachung der heimischen Infrastruktur macht durchaus Sinn, möchte man mögliche Problem frühzeitig erkennen oder sogleich informiert werden, wenn z.B. die Haussteuerung nicht korrekt läuft.

In der Vergangenheit habe ich mir, zumindest von meinen Linux Systemen, mittels Logwatch eine tägliche Auswertung der Logfiles zusenden lassen. Der entscheidende Nachteil dieser Methode ist jedoch, dass Netzwerk- und andere Proprietäre-Komponenten mit dieser Lösung nicht sinnvoll und zeitnah überwacht werden können.

Einfach und kostengünstig

Die Anforderungen an das Produkt sind:

  • Überwachung kritischer Komponenten
  • eine grafische Aufbereitung der Daten
  • kostengünstig
  • auf einem Raspberry PI 2 installierbar und betreibbar

Es gibt eine schier unüberschaubare Anzahl von Produkten und nebst den «Urgesteinen» wie CACTI oder MRTG, welche kostenfrei eingesetzt werden können, gibt es Lösungen wie PRTG, für die man richtig Geld ausgeben kann.

Schlussendlich habe ich mich für die Lösung MUNIN entschieden, da dieses Produkt bereits als Package für die Debian/Rasbian Systeme zur Verfügung steht und mit eigenen Script relativ einfach erweitert werden kann.

Die Architektur ist relativ simpel: Es gibt eine MUNIN-Server Komponente, welche alle Daten sammelt und in einer lokalen Round-Robin-Datenbank (RRD) ablegt und einen Agent namens MUNIN-Node, der sämtliche Werte ausliesst und an den Server übermittelt. Ein weiterer wichtiger Punkt ist die Unterstützung des SNMP.

Die Installation

 Einfache MUNIN Server konfiguration

Einfache MUNIN Server konfiguration

 Auswertung der Daten mittels MUNIN

Auswertung der Daten mittels MUNIN

Die Installation selbst ist simpel und geht problemlos von der Hand.

Im ersten Schritt ist der Raspberry Pi vorzubereiten. Ich verwende hierzu schon seit einiger Zeit die Anleitung von Circuit Basics.

Es sind beim Aufsetzen des Systems einige Punkt zu berücksichtigen: Zum einen sollte, um den SSH-Server zu aktivieren, im ROOT Verzeichnis der SD-Karte eine Datei mit Namen SSH. erstellt werden und nach dem ersten Boot sollte das raspi-config Programm ausgeführt werden. Hier sind das Standard-Passwort des pi Users zu ändern, der ganze Platz der SD-Karte zu allozieren, die Zeitzone und allenfalls die Lokalen Einstellungen anzupassen.

Aus Sicherheitsgründen ist es ratsam den Account «pi» um zu benennen. Eine Anleitung wie dies durchgeführt werden kann wird von modmypi zur Verfügung gestellt.

Achtung: Sollte der root Account via Remote auf den Raspberry Pi zugreifen können müssen, ist eine Anpassung in der Konfigurationsdatei des SSH-Dienstes durch zu führen.

In der Datei /etc/ssh/sshd_config ist der Eintrag PermitRootLogin without-password mit PermitRootLogin yes zu ersetzen. Anschliessend sollte ein Reboot des Systems durchgeführt werden oder zumindest der SSH Dienst neu gestartet werden (/etc/init.d/sshd restart) damit die Änderungen aktiviert werden.

Die Installation des Munin Server selbst geht mit

apt-get install munin

einfach von der Hand. Das Debian bzw. Raspian-System installiert alle notwendigen Pakete automatisch. Möchte man die Daten mittels WebServer bereitstellen, ist natürlich auch dieser (z.B. Apache) zu installieren.

Eine etwas ausführlichere Installationsanleitung (inkl. Beispielkonfiguration von MUNIN und Apache) findet man auf HowToForge .

Ist nur der Agent (als Node bezeichnet) gewünscht, kann dieser mittels

apt-get install munin-node

installiert werden.

Das Polling der Werte wird vom Server initiiert und findet standardmässig alle 5 Minuten statt. Nachdem die neusten Werte übertragen wurden, werden auch die Grafiken und HTML Seiten, basierend auf den Templates, neu generiert.

Die Installation des Agent und der Plugins prüfen

$ telnet testserver 4949
Trying 192.168.1.1...
Connected to testserver.example.com
Escape character is '^]'.
#munin node at testserver
list
temperature clock temp volt [...]
fetch clock
clock.value 650
.
quit

Um die korrekte Arbeitsweise des MUNIN-Node zu prüfen, besteht die Möglichkeit mittels Telnet auf den Port 4949 des zu prüfenden Systems zuzugreifen. Läuft alles einwandfrei, so meldet sich der MUNIN-Node und es besteht die Möglichkeit aktuelle Werte abzufragen und zu prüfen ob der Agent alle Plugins bzw. deren Werte erkennt.

Der Befehlssatz ist sehr eingeschränkt, aber für das Troubleshooting reicht er gut aus. Die Befehle hierzu sind:

  • list um alle alle verfügbaren Werte die ausgelesen werden können anzuzeigen
  • fetch um einen bestimmten Wert abzufragen
  • nodes zeigt alle registrierten Nodes an (hilfreich, wenn ein Agent noch SNMP Komponenten abfragen sollte)

Wichtig: In verschiedenen Foren wurde erwähnt, das MUNIN oftmals Problem hat (oder zumindest hatte) wenn die Namen der Nodes nicht korrekt übereinstimmen. Sollte sich der Node nicht mit dem korrekten bzw. erwarteten Namen melden, besteht die Möglichkeit in der Datei /etc/munin/plugin-conf.d/munin-node mittels Eintragen von host_name [node-name] den korrekten Namen des Nodes fest zu legen

Weitere Plugins aktivieren

Wurde der Server bzw. Agent mittels vorgefertigter Pakete installiert, sind noch weitere sog. Plugins verfügbar, die von Haus aus aber noch nicht aktiviert sind. Plugins sind nichts als kleine Skripte, welche Daten des Systems ermitteln und dem Node zur Verfügung stellen.

Zur Aktivierung eines solchen Plugins ist das auszuführende Skript im Konfigurationsverzeichnis des MUNIN-Nodes abzulegen. Noch besser ist es, wenn die Plugins mittels symbolischem Link eingebunden werden:

ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_access

Plugin spezifische Konfigurationen und Werte können in der Datei /etc/munin/plugin-conf.d/munin-node hinterlegt werden.

Wer MUNIN zur Überwachung von Raspberry Pi Hardware einsetzen möchte, findet auf Krausix eine Anleitung zur Installation eines Skriptes, welche zusätzliche Werte des Systems, wie z.B. Board Temperatur, ermittelt.

Mittels

munin-node-configure –suggest

kann zudem überprüft werden welche Plugins aktiviert sind und welche noch aktiviert werden könnten.

Ein Node mittels SNMP abfragen

Wie schon eingangs erwähnt unterstützt MUNIN SNMP um z.B. Windows Systeme, für welche es keinen sinnvollen Agent gibt, oder Netzwerkkomponenten zu überwachen.

Es gibt ein MUNIN Tutorial von ReadtheDocs welches erklärt wie die Datensammlung bei SNMP Komponenten funktioniert und wie diese konfiguriert werden können.

Persönlich hat mir die Anleitung von Krausix am besten gefallen, da dieser Blog-Beitrag die Einrichtung an einem konkreten Beispiel beschreibt.

Plugins selbst schreiben

Im Grundsatz gibt es zwei Anforderungen, welche ein Plugin erfüllen muss: Es muss die Konfiguration der Daten, welche es liefert, dem Node bekannt geben und natürlich die Daten selbst ermitteln und auf den Standard-Output ausgeben.

Eine detaillierte Anleitung findet sich im Munin Wiki und einige Beispiele wurden von Lamertz, Gwendragon oder von Fury’s Blog veröffentlicht

Fazit

Die Arbeit mit MUNIN ist sehr einfach und innerhalb von 1-2 Stunden ist der Server und die ersten Nodes problemlos aufgesetzt. Da die Möglichkeit besteht Schwellwerte für Warnungen bzw. kritische Fehler zu definieren, kann man mögliche Probleme schon früh und automatisiert erkennen.

Mich persönlich frustrierte der Umstand, dass ich nicht die korrekte Konfiguration fand, um eine aggregierte Grafik aller Systeme zu erstellen. Und dies trotz mehrere Nächte der Suche in verschiedenen Foren und Blogs.

Auch das Standard-Template ist nicht wirklich eine Augenweide. Wer auf der Suche nach einem etwas ansehnlicheren Tempalte ist, sollte Munstrap von JonnyMcCullagh einmal anschauen.

Ist das primäre Ziel Systeme zu überwachen, bei Bedarf alarmiert zu werden (z.B. per Mail) und die wichtigsten Informationen wie z.B. CPU-Speed, Netzwerktraffic, etc grafisch verfügbar zu haben, leistet MUNIN sehr gute Dienste und das bei einer sehr kurzen Einarbeitungszeit.