Wächter der NetzeÜberwachung mit Nagios
Monitoring-Aufgaben
Wächter der Netze
Das Open-Source-Tool Nagios ist die beste Lösung für Monitoring-Aufgaben, und das aus vielerlei Gründen. Die Software ist äußerst flexibel und überwacht nahezu alles: Neben der Verfügbarkeit eines Servers kontrolliert der Systemverwalter damit etwa individuelle Dienste, angefangen von SSH bis hin zu komplexen Datenbank-Umgebungen. Die Überwachung erfolgt über so genannte Plug-ins, die lokal ausgeführt werden und dem Nagios-Monitor eine entsprechende Statusmeldung als Feedback liefern. Entfernte Maschinen können über NRPE (Nagios Remote Plugin Executor) ebenfalls Plug-ins abspielen und die Informationen SSL-verschlüsselt an den Nagios- Monitor übertragen. Der folgende Beitrag beschreibt die Grundkonfiguration und Basisinstallation von Nagios. Den aktuellen Quellcode für Nagios, NRPE und Nagios-Plugins finden Sie unter www.nagios.org.
Nagios-Installation
Wächter der Netze
Die Installation führen wir auf einem minimalisierten CentOS-System, in der Version 4.3, durch. Zunächst installieren wir die notwendigen Programme und Bibliotheken per yum mit dem Kommando:
yum install gcc gd-devel libjpeg-devel libpng-devel
Nagios benötigt die drei Entwicklungsumgebungen *-devel, damit beim Übersetzen die entsprechenden Bibliotheken korrekt initialisiert werden. Im nächsten Schritt legen Sie einen Benutzer (und eine Gruppe) für den Einsatz von Nagios an:
useradd -d /usr/local/nagios -c “Nagios” -m nagios
Geben Sie anschließend das Verzeichnis für alle Benutzer zum Lesen und Ausführen mit dem folgenden Befehl frei:
chmod 755 /usr/local/nagios
Über die Parameter von ./configure können Sie Nagios alternativ auch einem anderen oder bereits bestehenden Benutzer zuordnen. Nachdem Sie den Quellcode von Nagios entpackt und ins entstandene Verzeichnis gewechselt haben, führen Sie zur Konfiguration folgenden Befehl aus:
./configure
Mit ./configure –help erhalten Sie alternativ eine Übersicht, welche Parameter bei der Konfiguration von Nagios noch berücksichtigt werden. In unserem Beispiel belassen wir alle Parameter auf den Voreinstellungen, was einer Nagios-Installation unter /usr/local/nagios entspricht. Ein wichtiger Hinweis: Soll Nagios unter CentOS mit aktiviertem SELinux betrieben werden, empfiehlt sich die Installation unterhalb der Verzeichnisstruktur /var/ www/html. Befinden sich Nutzdaten für Apache in anderen Verzeichnissen, blockiert SELinux deren Zugriff. Eine Anpassung der SE-Policies würde nur eine temporäre Lösung bieten, da diese durch ein Update der SE-Policy überschrieben wird. Nach der Konfiguration nehmen Sie die Übersetzung von Nagios 2.3.1 vor mit:
make all
Mit dem folgenden Befehl
make install
kopieren Sie Nagios in das vorbestimmte Verzeichnis /usr/local/nagios. Mit make install-init erstellen Sie imVerzeichnis /etc/init.d/ die Datei nagios. Diese lässt sich unter CentOS mit den Befehlen chkconfig oder service für den vollautomatischen Start von Nagios per Init- Script einbinden. Danach installieren Sie mit
make install-config
einen Satz von Beispielkonfigurationsdateien in das Verzeichnis /usr/local/nagios/etc. Diese Konfigurationsdateien passen Sie im folgenden Abschnitt an Ihre individuelle Systemumgebung an.
Apache für Nagios
Wächter der Netze
Für den Einsatz von Nagios benötigen Sie einen lauffähigenWebserver. Installieren Sie Apache 2 mit dem Befehl:
yum install httpd
Um die Installationspfade von Nagios in die Apache-Umgebung einzubinden, fügen Sie der Datei /etc/httpd/conf/httpd.conf folgende Zeilen hinzu:
ScriptAlias /nagios/cgi-bin/usr/local/nagios/sbin
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName ‘Nagios Zugriff
Autorisierung’
AuthType Basic
AuthUserFile /usr/local/
nagios/etc/htpasswd.users
Require valid-user
Alias /nagios /usr/local/
nagios/share
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName ‘Nagios Zugriff
Autorisierung’
AuthType Basic
AuthUserFile /usr/local/
nagios/etc/htpasswd.users
Require valid-user
Tipp: Alternativ können Sie diese Zeilen auch in eine eigene, nur für Nagios dedizierte Konfigurationsdatei, /etc/httpd/conf.d /nagios.conf einfügen. Auf dieseWeise bleibt die Original-Apache-Konfigurationsdatei unverändert. Im nächsten Schritt erstellen Sie die Autorisierungsdatei /usr/local/nagios/ etc/htpasswd.users und fügen den Benutzer nagiosadmin hinzu mit dem Befehl:
htpasswd -c /usr/local/nagios/ etc/htpasswd.users nagiosadmin
Das System fordert Sie zur Eingabe eines Kennworts für diesen Benutzer auf. Mit
/etc/init.d/httpd restart
starten Sie denWebserver neu. Rufen Sie im Webbrowser die Adresse http://local host/ nagios/ auf, um die Funktionalität von Nagios zu testen. Funktioniert ein Log-in mit dem Benutzer nagiosadmin und dem in htpasswd angegebenen Kennwort, sollten Sie sich auf der Startseite von Nagios befinden. Tipp: Funktioniert es nicht, überprüfen Sie die Änderungen in der HTTPD-Konfigurationsdatei und die Permissions des Verzeichnisses /usr/local/nagios. Dieses muss für jeden Benutzer les- und ausführbar sein.
Nagios-Plug-ins installieren
Wächter der Netze
Vor der eigentlichen Konfiguration von Nagios installieren Sie ein weiteres Programmpaket: nagios-plugins. Bei den Nagios- Plug-ins handelt es sich um eine Sammlung von Überwachungsmodulen. So überwacht beispielsweise check_load die aktuelle Systemauslastung, check_ping führt einen Ping-Befehl auf den Zielhost durch. Nagios-Plug-ins sind in der Programmiersprache C++ entwickelt. Aus diesem Grund stellen Sie vor der Konfiguration und Installation der Plug-ins sicher, dass der entsprechende C++-Compiler installiert ist. Unter CentOS funktioniert dies mit dem Befehl
yum install gcc-c++
und einem nachfolgenden:
./configure
Bleibt die Konfiguration beim Eintrag checking for redhat spopen problem… stehen, brechen Sie diese mit [Strg]+[C] ab und starten alternativ:
./configure –enable-redhatpthread- workaround
Da Nagios-Plug-ins für eine Vielzahl verschiedener Services benötigtwerden, sollten Sie in jedem Fall die Ausgabe von ./configure genau verfolgen. Der Konfigurationsprozess weist Sie durch Fehlermeldungen auf eventuell fehlende Bibliotheken, beispielsweise für OpenSSL oder LDAP, hin, die Sie per Hand nachinstallieren müssen. Nach erfolgter Konfiguration übersetzen und installieren Sie die Nagios-Plug-ins mit:
make all make install
In der Grundkonfiguration installiert dieser Befehl die Nagios-Plug-ins in das Verzeichnis /usr/local/nagios/libexec. Alternativ können Sie mit der Option –prefix den Installationspfad entsprechend anpassen.Um sich die Funktionsweise eines Nagios-Plug-ins zu veranschaulichen, starten Sie den Befehl:
/usr/local/nagios/libexec/
check_ping –help
Alle offiziellen Plug-ins sind so konzipiert, dass mit der Option –help eine ausführliche Hilfe zum Plug-in ausgegeben wird. In unserem Beispiel check_ping fügen wir folgende Parameter zum Test ein:
check_ping -H localhost -w
99,99% -c 100,100% -p 1
Das bedeutet: Auf den Host localhost schickt das Plug-in genau ein ICMP-Paket per Ping. Die Anzahl der Pakete wird durch -p festgelegt. Sie erhalten eine Ausgabe wie:
PING OK – Paket loss = 0%, RTA= 0.87 m
s
Übersteigen Paketverlust oder Antwortzeit die mit -w für Warnings definierten Werte 99 ms und 99 %, ist das Ergebnis:
PING WARNING – Paket loss = 0%,
RTA = 102.23 ms
Klettern die Werte über ein kritisches Niveau, welches mit -c für Critical festgelegt wird, gibt das Plug-in die Meldung aus:
PING CRITICAL – Paket loss = 100%, RTA = 0.00 ms
Die Aufgabe von Nagios besteht darin, die von den Plug-ins zurückgegebenen Werte zu analysieren und zu verarbeiten, etwa in Form von Verfügbarkeitsstatistiken oder Alarm-Nachrichten per E-Mail.Weiterführende Informationen zu Nagios-Plug-ins und eine Anleitung, wie Sie eigene Plug-ins für Nagios entwickeln können, finden Sie unter
http://nagiosplug.sourceforge.net.
Nagios-Basiskonfiguration
Wächter der Netze
Für die Basiskonfiguration von Nagios ist eine erfolgreiche Grundinstallation der Software sowie der Plug-ins erforderlich. Stellen Sie daher sicher, dass die ersten Schritte korrekt ausgeführt wurden. Mit dem Befehl make install-config haben Sie bei der Installation von Nagios eine Reihe von Konfigurationsdateien ins Verzeichnis /usr/local/ nagios/etc kopiert. Anhand dieser Dateien führen Sie jetzt die Basiskonfiguration durch. Wechseln Sie ins Verzeichnis /usr/local/ nagios/etc und kopieren Sie die Datei cgi. cfg-sample nach cgi.conf. In cgi.cfg nehmen Sie jetzt folgende Änderungen vor:
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
Damit geben Sie dem zuvormit dem Befehl htpasswd erstellten Benutzer nagiosadmin alle Zugriffsrechte auf Nagios. Wenn Sie weitere Benutzer anlegen, können Sie deren Rechte in der Datei cgi.cfg einschränken:
authorized_for_system_commands=nagiosadmin,nagiosuser
Neben nagiosadmin darf auch nagiosuser jetzt Systembefehle an Nagios weitergeben. Weitere Änderungen an der Datei sind für unser Beispiel nicht erforderlich. Kopieren Sie nagios.cfg-sample nach nagios.cfg. Klammern Sie hier die folgenden Zeilen durch eine führende Raute aus:
#cfg_file=/usr/local/nagios/etc/ checkcommands.cfg
#cfg_file=/usr/local/nagios/etc/ misccommands.cfg
Sonstige Anpassungen sind nicht vorzunehmen. Benennen Sie jetzt die zwei Dateien
ressource.cfg-sample in ressource.cfg
und minimal.cfg-sample in minimal.cfg um.
Damit ist die minimale Konfiguration von Nagios abgeschlossen. Überprüfen Sie diese mit:
/usr/local/nagios/bin/nagios -v
/usr/local/nagios/etc/nagios.cfg
Sie sollten folgende Meldung erhalten:
Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check
Für den Anfang empfiehlt es sich, Nagios direkt über ein Konsolenfenster zu starten, der Befehl lautet:
/usr/local/nagios/bin/nagios
/usr/local/nagios/etc/nagios.
cfg
Alternativ können Sie den Monitor auch über das Kommando
/etc/init.d/nagios start
starten und die unter /usr/local/nagios/var/nagios.log befindliche Logdatei mit tail -f direkt überwachen. Unter CentOS 4.3 sind keine Anpassungsarbeiten für den Lauf des
Init-Scripts notwendig.
Fünf einfache Services
Wächter der Netze
Stellen Sie jetzt mit einem Webbrowser eine Verbindung zu http://localhost/nagios her und melden Sie sich dort als Benutzer nagiosadmin an. Sie sollten im Menü Tactical Overview eine Anzeige erhalten, dass sich fünf Services im Status Pending oder Ok befinden. Pending bedeutet, dass eine Überprüfung eines Service bevorsteht. Ok signalisiert, dass der Service wie erwartet funktioniert. Im Menü Service Details finden Sie eine Auflistung der fünf Dienste:
Current Load
Current Users
PING
Root Partition
Total Processes
Die Definition dieser Dienste zur Nagios Überwachung finden Sie in der Datei minimal.cfg. Das Beispiel von PING ist nach dem folgenden Schema aufgebaut:
define service {
use generic-service
host_name localhost
service_description PING
is_volatile 0
check_period 7×24
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notfication_period 7×24
check_command check_ping!
100.0,20%!500.0,60%
}
\pardErinnern Sie sich an die Optionen von check_ping? Im folgenden Abschnitt definiert minimal.cfg das Kommando check_ping:
define command {
command_name check_ping
command_line $USER1$/
check_ping-H $HOSTADDRESS$
-w $ARG1$ -c $ARG2$ -p 5
}
Das bedeutet: 100.0,20% wird als ARG1 übergeben, als Parameter für die Warnung. 500.0,60% wird als ARG2 übergeben, um den Zustand Critical zu definieren. Pingzeiten >100 ms oder 20% Paketverlust signalisieren Nagios eine Warnung, >500ms oder 60% Paketverlust zeigen sogar einen
kritischen Zustand an.Werfen Sie einen Blick auf die Datei minimal.cfg. In dieser Datei finden Sie einfach verständliche Beispiele, die erläutern, wie Sie Services, Hosts, Hostgruppen und Kommandos zur Überwachung eines Systems konfigurieren. Nehmen Sie auch das Beispiel notify-by-email genau unter die Lupe. Hier wird veranschaulicht, wie Nagios im Falle eines Fehlers eine E-Mail abschickt.
Eigene Services definieren
Wächter der Netze
Als praktisches Beispiel konfigurieren Sie jetzt einen eigenen Service, den es zu überwachen gilt. Als Beispiel wählen wir das Secure-Shell-Protokoll SSH. Zunächst informieren Sie sich durch den Aufruf von
/usr/local/nagios/libexec/
check_ssh –help
über die einzelnen Parameter. Wir entscheiden uns für den Minimalismus:
check_ssh localhost
sollte für das Erste genügen, um sicherzustellen, das SSH noch läuft. Hier der Code:
define command {
command_name check_local_ssh
command_line $USER1$/check_
ssh $HOSTADDRESS$
}
define service {
use generic-service
host_name localhost
service_description SSHD
Status
is_volatile 0
check_period 24×7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24×7
check_command check_local_ssh
}
Starten Sie Nagios neu mit dem Befehl
/etc/init.d/nagios restart
und melden Sie sich als nagiosadmin an. Anstatt der fünf Services erkennen Sie jetzt auch den neuen SSH-Service im Checkup.
Bild: Schnellzugriff: Per Mouse-over lassen sich auf der grafischen Darstellung von Nagios
Details über die einzelnen Services und Hosts abfragen
NRPE und Plug-ins installieren
Wächter der Netze
Eine Ungereimtheit bleibt jedoch: Wie überprüft Nagios Funktionen wie check_disk auf einem entfernten Server? Für diesen Zweck wurde der Nagios Remote Plugin Executor (NRPE) entwickelt. Diese Schnittstelle wird wie folgt auf einem zu überwachenden System installiert:
./configure && make all
mkdir /usr/local/nagios
mkdir /usr/local/nagios/sbin
mkdir /usr/local/nagios/etc
cp src/nrpe
/usr/local/nagios/sbin
cp sample-config/nrpe.cfg
/u
sr/local/nagios/etc
chmod 755
/usr/local/nagios/etc/nrpe.cfg
Tragen Sie in die Datei /etc/ services folgende Zeile ein:
nrpe 5666/tcp
und erstellen Sie die Datei /etc/xinetd.d/nrpe mit folgenden Inhalt:
service nrpe
{
flags = REUSE
socket_type = stream
wait = no
user = nagios
server =
/usr/local/nagios/sbin/nrpe
server_args = -c
/usr/local/nagios/etc/nrpe.cfg
–inetd
log_on_failure += USERID
disable = no
only_from = 192.168.0.100
}
Im Feld only_from geben Sie die IP-Adresse Ihres Nagios-Servers an. Mit dem Befehl
/etc/init.d/xinetd restart
starten Sie xinetd auf CentOS. Stellen Sie sicher, dass der benötigte TCP-Port 5666 nicht durch die Firewall blockiert, sondern freigeschaltet ist. Installieren Sie ebenfalls die Nagios-Plug-ins auf dem zu überwachenden Server. Auch auf dem Nagios-Server ist eine Installation von NRPE notwendig. Führen Sie nach dem Übersetzen folgende Befehle aus:
cp src/check_nrpe
/usr/local/nagios/libexec
Fügen Sie in der Konfigurationsdatei minimal.cfg folgende Einträge hinzu:
define host {
use generic-host
host_name testserver
address 192.168.0.4
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24×7
notification_options d,r
contact_groups admins
}
define command {
command_name check_nrpe
command_line
$USER1$/check_nrpe -H
$HOSTADDRESS$ -c $ARG1$
}
define service {
use generic-service
host_name testserver
service_description User
auf Testserver
…siehe SSH Beispiel…
check_command check_nrpe!
check_users
}
Nach dem Neustart von Nagios erscheint unser Testserver als neuer Host im Monitor. Die Definition des Kommandos check_users wird übrigens in der Datei /usr/local/nagios /etc/nrpe.cfg auf dem zu überwachenden Server definiert. Dort legen Sie auch die weiteren Parameter fest, ab wann Nagios eine Warnung oder kritische Fehler melden soll.
Fazit Damit endet unser kleiner Exkurs in die Welt von Nagios. Sie kennen jetzt die Grundlagen, um eine Nagios-Installation erfolgreich durchzuführen und eine Minimal-Konfiguration aufzustellen, die offiziellen Nagios- Plug-ins zu verwenden, und Sie wissen, wie externe Server per NRPE eingebunden werden. Eine ausführliche Dokumentation und zahlreiche Konfigurationsbeispiele finden Sie auf der Website von Nagios.