Ausfälle schneller erkennen mit der freien Monitoring Software Nagios: Server und Applikationen überwachen
Auch wenn das Wort „eBusiness“ in den letzten Jahren etwas in Verruf geraten ist, sein Siegeszug ist nicht aufzuhalten. Dabei bedeutet „eBusiness“ eigentlich nichts anderes, als Geschäftsprozesse elektronisch abzubilden. Egal, ob mit einer hochkomplexen Shop-Applikation für ein großes Versandhaus, einem Windows-Fat-Client für die Buchhaltung oder mit einer einfachen Website. Mit der Website betreibt auch der kleine Dienstleister „eBusiness“. Wenn die Seite nicht funktioniert oder zum Beispiel Angebotsanfragen per E-Mail mit einer Unzustellbarkeitsbenachrichtigung zurückkommen, ist das beinahe überall geschäftskritisch.
Im Umfeld von TYPO3 betreiben viele Webagenturen ihre eigenen TYPO3-Server oder sie mieten einen Rootserver im Rechenzentrum eines Anbieters. Der Dienstleister wacht zwar über den Zustand der Serverhardware und des Betriebssystems, aber die einzelnen Websites auf dem Server oder die MySQL-Datenbank kann er nicht überwachen. Hier kommt Nagios ins Spiel. Es ist das Werkzeug, das neben Hardware und Betriebssystemparameter auch Applikationen oder einzelne Websites überwacht. So werden Ausfälle schneller erkannt und vielleicht sogar behoben, bevor der Anwender sie entdeckt.
Der Daemon gibt die Kommandos …
Nagios ist ein Überwachungssystem für Hosts und Services. Nach der Nagios-Definition ist ein Host ein Gerät mit einer (IP-)Adresse und ein Service ein Parameter oder ein Dienst dieses Geräts, der unter derselben Adresse erreichbar ist. Die Applikation setzt auf aktive, zeitgesteuerte Überwachungen, die innerhalb definierter Intervalle immer wieder ausgeführt werden. Beispielsweise kann Nagios alle überwachten Server alle zehn Minuten pingen und so kontrollieren, ob sie erreichbar sind.
Für die Überwachung verwendet Nagios so genannte Plugins, die der Daemon startet und die die eigentliche Überwachungsaufgabe durchführen. Ein „check_ping“ überprüft die Verfügbarkeit einer Ressource per ICMP Ping oder ein „check_disk“ überwacht den Füllstand einer Festplatte. Für alle in Nagios konfigurierten Checks lassen sich Warnschwellen angeben, bei deren Über- oder Unterschreitung ein festgelegter Kontakt alarmiert wird. Im einfachsten Fall ist das eine E-Mail, aber Nagios kann durch Shell-Scripte auch SMS versenden oder Alarmsirenen aufheulen lassen. Über ein integriertes Webinterface lässt sich der aktuelle Zustand aller überwachten Server und Dienste einsehen. Darin können auch die Entwicklung in der Vergangenheit ausgewertet oder Verfügbarkeitsreports von Servern, Diensten oder ganzen Gruppen erstellt werden.
In den Konfigurationsdateien des Daemons wird festgelegt, welche Überwachungen wann, wo und wie genau durchgeführt werden sollen. Der Daemon plant die Ausführungszeiten der einzelnen Checks, um die Systeme nicht zu überlasten und stellt die Überwachungen in eine Scheduling Queue. Ein weiterer Teilprozess arbeitet diese Queue ab, führt die einzelnen Überwachungen aus und verarbeitet die Rückgabewerte. Die Ergebnisse werden einerseits genutzt, um den aktuellen Zustand der überwachten Hosts und Services im Webinterface anzuzeigen, aber auch, um Warnmeldungen an die Administratoren zu versenden.
… und die Plugins machen die Arbeit
Für die eigentlichen Überwachungen bedient sich der Daemon der Nagios-Plugins. Sie werden vom Daemon gestartet, bekommen die notwendigen Parameter und die Warnschwellen übergeben und melden abschließend das Ergebnis inklusive einer Statusmeldung an den Daemon zurück. Einige hundert Plugins sind bereits in einem offiziellen Nagios-PluginPaket enthalten. Sollten weitere Plugins benötigt werden, lohnt sich meist ein Besuch von NagiosExchange [1]. In dem Katalog werden auch selbst erstellte Plugins anderer User zugänglich gemacht. Für die allermeisten Überwachungsanforderungen finden sich dort inzwischen die passenden Plugins. Auch bei SourceForge sind Plugins zu finden [2].
Da die Schnittstelle zwischen den Nagios-Plugins und dem Nagios-Daemon sehr einfach gehalten ist, kann man ohne großen Aufwand eigene Nagios-Plugins schreiben oder bestehende Scripte an Nagios anbinden. Die offiziellen Nagios-Plugins sind in der Regel in C programmiert, während viele User ihre Plugins in Perl oder sogar als Shell-Scripte realisieren. Auf Windows-Servern kann sogar Visual Basic oder VBScript zum Einsatz kommen. Hier der Aufruf und die Rückgabe eines Nagios-Plugins per Shell:
# ./check_disk -w 20 -c 10 DISK OK - [44601224 kB (61%) free on /dev/sda1] [383912 kB (100%) free on tmpfs]
Listing 1
Der Aufruf von Plugins unterscheidet sich je nach Art der Überwachung, da meistens verschiedene Parameter notwendig sind. So benötigt eine HTTP-Überwachung zum Beispiel Username und Passwort, während eine Überwachung mit SNMP eine OID und einen Community-Namen erfordert. Der Aufruf eines Plugins mit der Option „-h“ zur Anzeige der Hilfe ist in dem Zusammenhang oft eine gute Idee.
Die Anzeige der Ergebnisse im Webinterface
Für die Anzeige der Ergebnisse bringt Nagios ein eigenes Webinterface mit. Darin werden alle aktuellen Zustände in unterschiedlichen Detailebenen angezeigt. Zunächst bietet die Tactical Overview einen guten Überblick über den Gesamtzustand des Netzwerks und die Performance des Nagios-Servers selbst. Die einzelnen Meldungen werden dabei nach Schweregrad sortiert von oben nach unten ausgegeben: von den „Network Outtages“, bei denen beispielsweise ein Routerausfall ein ganzes Netzsegment lahmlegt, über nicht mehr erreichbare Hosts bis hin zu einzelnen Diensten. Daneben gibt es Ansichten, die nach unterschiedlichen Host- oder Servicegruppen gefiltert sind und eine automatisch generierte Statusmap, mit der sich die Abhängigkeiten der einzelnen Hosts untereinander besser erkennen oder darstellen lassen.
Neben dem aktuellen Zustand, stehen auch die Daten aus der Vergangenheit für Auswertungen zur Verfügung. So lässt sich im Nagios Webinterface detailliert nachvollziehen, wie oft ein Problem in der Vergangenheit bereits aufgetreten ist oder welche Personen schon verständigt worden sind. Aber auch die Verfügbarkeit von Servern und Applikationen kann Nagios aus den Messergebnissen berechnen und darüber sehr genaue Reports erstellen. Da in Nagios auch Wartungsfenster als Downtimes hinterlegt werden können, unterscheiden die Reports zwischen geplanten und spontanen Ausfällen.
Gute Erweiterbarkeit durch zahlreiche Add-Ons
Bei der Überwachung der hinterlegten Services generiert Nagios auch eine Information über die Auslastung der Ressource, also beispielsweise die Responsezeiten bei einem Ping oder den Füllstand einer Festplatte. Über eine Schnittstelle lassen sich die Werte auch an andere Applikationen weiterreichen, die daraus zum Beispiel Grafiken und Statistiken erstellen. Für diese Performanceauswertungen gibt es inzwischen eine ganze Reihe von RRDtool-basierten Anwendungen, die sich gut in Nagios einfügen.
Ein weiteres, sehr interessantes Zusatztool ist NagVis. Damit lassen sich grafische Netzwerkpläne, wie sie beispielsweise mit Microsoft Visio erstellt werden können, um Realtime-Statusinformationen aus Nagios erweitern. Innerhalb des Netzwerkdiagramms wird dann angezeigt, ob das entsprechende Gerät einwandfrei funktioniert oder gerade Probleme aufgetreten sind.
Empfehlungen für den Einstieg
Da Nagios ein sehr mächtiges Werkzeug für alle Arten von Überwachungen ist, fällt der erste Einstieg leider nicht ganz leicht. Es ist sinnvoll, einige Wochen oder Monate für den effektiven und produktiven Einsatz von Nagios einzuplanen. Die lange Einarbeitung liegt aber nicht an Nagios allein, sondern daran, dass Monitoring an sich ein sehr komplexes Thema ist. Die Dokumentation von Nagios ist wie bei TYPO3 gut und umfangreich. Sie ist auf der Homepage des Projekts und innerhalb des Webinterfaces online verfügbar. Bei der Installation von Nagios werden neben den Programmdateien einige beispielhafte Konfigurationsdateien installiert. Sie eignen sich als Basis für die ersten, eignen Gehversuche mit Nagios. Dazu dürfen die Dateien modifiziert werden. Auch das Nagios-Buch von Wolfgang Barth ist zu empfehlen [3].