Plugin Theorie


Einleitung

Anders als die meisten anderen Monitoring-Tools enthält Nagios selbst keine Mechanismen um den Status von Diensten, Hosts, usw. zu überprüfen. Stattdessen verlässt sich Nagios auf externe Programme (Plugins genannt), die diese dreckige Arbeit übernehmen. Nagios führt ein Plugin immer dann aus, wenn der Status eines Dienstes oder Hosts überprüft werden muss. Das Plugin tut irgendetwas (man beachte den sehr allgemeinen Ausdruck an dieser Stelle), um den Status zu überprüfen und gibt dann einfach nur ein Ergebnis an Nagios zurück. Nagios verarbeitet dieses Ergebnis das es vom Plugin bekommt und startet die entsprechend nötige Aktion (einen "event handler" ausführen oder eine Benachrichtigung verschicken).

Das Bild zeigt wie die Plugins vom Kern-Programm getrennt werden. Nagios führt ein Plugin aus, das lokale oder entfernte Ressourcen oder Dienste irgendeines Types überprüft. Sobald das Plugin diese Aufgabe erledigt hat, gibt es das Ergebnis zur Verarbeitung zurück an Nagios. Ein komplexeres Diagramm wie Plugins arbeiten, kann in der Dokumentation für passive Dienst-Überprüfungen gefunden werden.

Der Vorteil

Der Vorteil der Plugin-Architektur ist, das wirklich alles woran man nur denken kann überwacht werden kann. Falls ein Überwachungsprozess automatisiert werden kann, kann er auch in Nagios integriert werden. Es gibt bereits viele Plugins um grundlegende Dinge wie die Prozessorlast, Festplattenausnutzung, Ping Raten, usw. zu überprüfen. Falls etwas anderes überwacht werden soll, ist die Dokukmentation um eigene Plugins zu schreiben interessant. Es ist einfach!

Der Nachteil

Der einzige Nachteil der Plugin-Architektur ist, das Nagios wirklich keine Ahnung davon hat, was genau überwacht wird. Es können Statistiken zur Netzwerk-Auslastung, "data error rates", Raumtemperaturen, Stromversorgung von CPUs, Lüftergeschwindigkeiten, Prozessorlast, Fesplattenausnutzung oder die Stärke der Bräune des Toasts des super-modernen Toasers überwacht werden... Daher kann Nagios z.B. keine Grafiken über die exakten Wert-Änderungen der zu überwachenden Ressourcen erstellen. Nagios kann nur die Änderungen des Status einer Ressource überwachen. Nur das Plugin selbst weiss genauer was überwacht wird und wie diese Überwachung vollzogen wird. Das Plugin kann zwar zusammen mit der Status-Information optional Performancedaten mit übergeben. Diese Performancedaten müssen dann aber an eine externe Applikation weitergegeben werden, die dann z.B. grafische Informationen über die Dienst-spezifischen Informationen (z.B. Prozessorlast, Festplattenausnutzung, etc.) erstellen kann. Weitere Informationen über Performancedaten kann hier gefunden werden.

Plugins für Dienst-Überprüfungen nutzen

Die Beziehung zwischen Plugins und Dienst-Überprüfungen sollte deutlich sein. Wenn Nagios einen bestimmten konfigurierten Dienst überprüfen muss, wird es das mit dem <check_command>-Argument aus der Dienst-Definition ausführen. Das Plugin überprüft den Status des Dienstes oder der Ressource die angegeben wurde und gibt diesen Wert zurück an Nagios.

Plugins für Host-Überprüfungen nutzen

Den Einsatz von Plugins zur Überprüfung von Hosts ist etwas schwerer zu verstehen. In jeder Host-Defintion kann das <host_check_command>-Argument genutzt werden, um ein Plugin anzugeben, das für die Status-Überprüfung des Hosts ausgeführt werden soll. Host-Überprüfungen werden aber nicht auf einer regulären Basis ausgeführt, sie werden nur ausgeführt wenn benötigt, gewöhnlicherweise wenn es ein Problem mit einem oder mehreren Diensten des Hosts gibt.

Host-Überprüfungen können die gleichen Plugins benutzen wie Dienst-Überprüfungen. Der einzige Unterschied ist die Beudeutung des Ergebnisses, dass das Plugin zurückgibt. Gibt das Plugin einer Host-Überprüfung einen "nicht-OK"-Status zurück, glaubt Nagios das der ganze Host down ist.

In den meisten Situationen wird hierfür ein Plugin genutzt das die Erreichbarkeit mittels ping überprüft. Sollte allerdings der super-hyper-moderne Toaster überprüft werden, wäre dies, ob die Heizelemente gestartet werden, wenn der Griff heruntergedrückt wird. Dies würde in diesem Beispiel zeigen ob der Toaster alive ist oder nicht...