Servermonitoring mit Munin

Mal wieder ein technischer Artikel. Diesmal zum Thema Servermonitoring

Je größer das gesamte System wird, desto schwieriger wird es, einzelne Komponenten im Auge zu behalten und Probleme zeitnah zu erkennen. Für die Alarmierung im „Brandfall“ benutzten wir Nagios. Wenn es jedoch darum geht Dinge wie Festplattennutzung, CPU-Last, Load, Datendurchsatz etc., auch auf längere Sicht, im Auge zu behalten, dann findet man in Munin das richtige Tool.

Munin besteht aus zwei Komponenten: Einem „Server“ (ein Cronjob der die Daten einsammelt) und beliebig vielen Nodes (welche die Daten liefern).

Die Nodes

Die Nodes laufen ständig im hintergrund mit und warten auf einem Netzwerkport auf die Anfrage vom Server. Erfolgt diese, fragt der Node sämtliche Daten ab und liefert diese an den Server. Welche Daten genau gesammelt werden, läßt sich über Plugins konfigurieren. Standardmäßig wird bereits eine große Zahl mitgeliefert (u.a. für Apache, Courier, Systemauslastung…). Sollte doch ein wunsch offen bleiben hilft meist ein Blick in die Plugin-Sammlung.
Falls auch das nicht hilft, so lassen sich die Plugins auch sehr einfach selbst schreiben. Dabei hat man keinerlei Einschränkungen, was die Wahl der Programmiersprache angeht (oft reichen sogar einfache Shell-Scripte). Ich hab beispielsweise ein PHP-Script zur Abfrage der Memcached-Statistiken gebastelt. Ein Howto findet sich im Munin-Wiki.

Der „Server“

Der „Server“ ist eigentlich kein richtiger Server, sondern ein Cronjob, der (standardmäßig in 5-minutentakt) die Nodes abfragt, die Daten in RRD-Archive speichert und dann eine HTML-Übersicht generiert.
Die Nodes lassen sich in verschiedene Gruppen einteilen und werden dann entsprechend dargestellt:

Für jeden Node gibt es dann eine Übersichtsseite, auf der man jeweils für jeden Dienst Tages- und Wochenstatistik sieht:

Für die einzelnen Dienste gibt es dann noch jeweils eine Seite mit Monats- und Jahresstatistiken:

In der Konfigurationsdatei auf dem Server lassen sich für jeden Dienst und Node je zwei Schwellenwerte festlegen: ein Warn- und ein Critial-Wert. Werden diese Grenzen überschritten, so kann Munin per eMail alarm schlagen oder beliebige andere Aktionen triggern (z.B. Nagios alarmieren).
Desweiteren lassen sich mehrere Datenquellen in einem Graphen aggregieren (siehe Screenshots oben), so dass man z.B. den Datendurchsatz im Gesamten oder auch die Systemauslastung im Vergleich betrachten kann.

Leave a Reply