Nagios - Automatische Überwachung einer IT-Infrastruktur, Teil 3
Aufbau einer einfachen Konfiguration
Das use-Attribut
Im Grunde ist die Konfiguration von Nagios objektorientiert: Jede define-Anweisung »erzeugt« ein Objekt. Wenn auch ein Vergleich mit einer objektorientierten Programmiersprache zu weit geht, so kann man doch zumindest sagen, dass Nagios es erlaubt, Attribute von anderen Objekten zu erben. Es gibt sogar abstrakte Objekte, das sind Objekte, die nur zu dem Zweck der Vererbung existieren und selbst nicht sichtbar sind.
Die Vererbung wird mit dem Attribut use
realisiert. Ein Objekt kann nur von einem anderen Objekt direkt erben, nicht von mehreren. Aber es kann eine mehrstufige Hierarchie von Objekten aufgebaut werden. Hauptsächlich dient der Mechanismus zum Verringern der Schreibarbeit und Vereinfachen der Wartung.
Da wir uns oben auf den Service »generic-service« gestützt haben, müssen wir ihn definieren. Dazu kopieren wir die Definition dieses Dienstes aus der originalen Nagios-Konfiguration und nennen sie beispielsweise generic-service_nagios2.cfg.
generic-service_nagios2.cfg
define service { name generic-service active_checks_enabled 1 passive_checks_enabled 1 parallelize_check 1 obsess_over_service 1 check_freshness 0 notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 1 retain_status_information 1 retain_nonstatus_information 1 notification_interval 0 is_volatile 0 check_period 24x7 normal_check_interval 5 retry_check_interval 1 max_check_attempts 4 notification_period 24x7 notification_options w,u,c,r contact_groups admins register 0 }
Entscheidend an dieser Definition ist das Attribut register
, das auf 0 gesetzt wird. Damit wird das Objekt zu einem oben erwähnten abstrakten Objekt, was in Nagios Schablone (Template) genannt wird. Die Schablone stellt selbst keinen gültigen Service dar, sondern kann ihre Attribute an andere Definitionen vererben. Der Wert 0 für register
gestattet es auch, einige Attribute, die eigentlich zwingend vorgeschrieben sind, wegzulassen, ohne dass Nagios sich beschwert. Die fehlenden Attribute müssen in den von generic-service abgeleiteten Services definiert werden. Die Bedeutung der oben angegebenen Attribute wollen wir hier nicht einzeln betrachten, dafür kann die Dokumentation zu Rate gezogen werden.
Beim ersten Hinsehen ist schwer zu erkennen, dass diese Definitionen Gebrauch von zwei weiteren Definitionen macht, die es noch nicht gibt: 24x7 und admin. Wir würden es dann bemerken, wenn wir Nagios zu einer Syntaxprüfung der bisherigen Konfiguration veranlassen würden. Dazu ist es aber noch zu früh, wir würden auf noch mehr Fehler stoßen.