Login
Newsletter
Werbung

So, 15. März 2009, 00:00

Nagios - Automatische Überwachung einer IT-Infrastruktur, Teil 3

Aufbau einer einfachen Konfiguration

Wir machen Gebrauch von $HOSTADDRESS$ und $ARG1$. Ersteres enthält die Adresse des zu prüfenden Rechners. Wird das Kommando beispielsweise in einem Service verwendet, der zur Hostgruppe Debian gehört, und Krakatau gehört zu dieser Hostgruppe, dann hat $HOSTADDRESS$ den Wert krakatau (oder dessen IP-Adresse, das spielt keine Rolle). $ARG1$ hingegen enthält das erste im Aufruf des Kommandos angegebene Argument. Der oben verwendete Aufruf remote!tcp111 wird daher bei Anwendung auf den Host Krakatau das folgende Kommando ergeben:

check_nrpe -H krakatau -t 60 -c tcp111

Wir haben hier den Timeout auf 60 Sekunden gesetzt (Standard: 10 Sekunden), damit langsame Hosts bei komplexeren Kommandos genug Zeit haben. so werden daher nicht definiert zu werden. Es bleibt noch das ominöse tcp111 zu erklären, das wir hier als Kommando (Option -c) an den Host übergeben.

Dazu muss man wissen, dass nrpe auf jedem überwachten Host einen kleinen Daemon voraussetzt. Diesen installieren wir mit

aptitude install nagios-nrpe-server nagios-plugins-basic

Wie gesagt, dies muss auf allen Rechnern erledigt werden. Damit nicht genug, es ist auch noch eine Konfiguration auf jedem Rechner anzulegen. Standardmäßig ist bereits eine Konfiguration unter /etc/nagios vorhanden. Die Datei nrpe.cfg weist jedoch einen Fehler auf. Der Eintrag pid_file=/var/run/nrpe.pid führt dazu, dass die PID-Datei beim Beenden des Daemons nicht gelöscht werden kann. Wir ändern ihn in pid_file=/var/run/nrpe/nrpe.pid und passen das System folgendermaßen an:

mkdir /var/run/nrpe
chown nagios.nagios /var/run/nrpe

Ferner fügen wir in local.cfg folgende Zeile ein:

command[[tcp111] = /usr/lib/nagios/plugins/check_tcp -p 111

Eine weitere Maßnahme ist nötig. Da der Daemon mit der tcpwrap-Bibliothek gelinkt ist, muss in der Datei /etc/hosts.allow sichergestellt sein, dass zumindest der Nagios-Server Krakatau Zugriff erhält:

ALL: krakatau

Nun können wir zunächst einmal den nrpe-Daemon neu starten, damit die neue Konfiguration wirksam wird:

/etc/init.d/nagios-nrpe-server restart

Wir sollten auf jeden Fall in der System-Logdatei (/var/log/daemon.log, je nach Konfiguration) nachsehen, ob der Daemon auch wirklich gestartet wurde.

Es bleibt immer noch unser tcp111 zu erklären. nrpe erlaubt nicht die Ausführung von beliebigen Kommandos, sondern nur von solchen, die in den Konfigurationsdateien definiert wurden. Dazu wird eine Definition verwendet, die an ein Array erinnert, wie dieser Auszug aus der Standardkonfiguration zeigt:

command[check_users] = /usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_zombie_procs] = /usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs] = /usr/lib/nagios/plugins/check_procs -w 150 -c 200

Wir haben dies vorhin erweitert um:

command[tcp111] = /usr/lib/nagios/plugins/check_tcp -p 111

Wenn wir nun das Kommando mit dem (willkürlich gewählten) Namen tcp111 via unser remote-Kommando aufrufen, dann wird auf dem Client das Kommando /usr/lib/nagios/plugins/check_tcp -p 111 ausgeführt. Der einzige benötigte Parameter ist fest codiert, und der Pfad zum Kommando ist, obwohl es ein Nagios-Plugin ist, vollständig angegeben - der nrpe-Daemon besitzt wohl kein Wissen über den Pfad zu den Plugins. Das Ergebnis des Aufrufs wird vom nrpe-Daemon an den Nagios-Server zurückgegeben, der es an der Web-Oberfläche darstellen kann.

Wenn wir jetzt noch unseren Host Krakatau in die Hostgruppe Debian aufnehmen, sind wir bereit, den neuen Service zu testen. Hier die geänderte Host-Definition.

krakatau.cfg

define host {
 host_name krakatau
 use generic-host
 hostgroups Debian, HTTP Servers
}

Service-Ansicht mit zweitem Service

Hans-Joachim Baader (hjb)

Service-Ansicht mit zweitem Service

Wie vorhin prüfen wir die Konfiguration mit nagios2 -v /etc/nagios2/nagios.cfg und laden dann die Konfiguration mit /etc/init.d/nagios2 reload neu. Nach einigen Minuten sollte der neue Service den Status PENDING verlassen haben und OK zeigen, sofern Portmap läuft.

Die Einrichtung des nrpe-Plugins war insgesamt eine Menge Arbeit. Bei einer größeren Zahl von Hosts muss man diese irgendwie automatisieren oder ein anderes Plugin einsetzen. Wenn man nrpe verwendet, sollte man dafür sorgen, dass die Konfiguration auf jedem Client identisch ist. Wir werden noch sehen, wie wir das erreichen können.

Services

Um einen neuen Service zu definieren, fügen wir ihn einfach zur passenden Hostgroup hinzu. Beispielsweise können wir auf allen Rechnern der Hostgroup Debian den Status der Paketverwaltung prüfen. Liegen Sicherheitsupdates vor, dann wird Nagios den Status CRITICAL anzeigen, bei normalen Updates den Status WARNING. Die Definition ist einleuchtend:

define service {
 hostgroup_name Debian
 service_description Paketstatus
 check_command remote!apt
 use generic-service
}

Allerdings müssen wir auf jedem betroffenen Host die Datei /etc/nagios/local.cfg um eine Zeile erweitern:

command[apt] = /usr/lib/nagios/plugins/check_apt -t 60

Natürlich muss der nrpe-Daemon dann wieder neu gestartet werden. Ebenso ist Nagios auf dem Server wieder zu prüfen und dann die Konfiguration neu zu laden.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung