Ausfälle erkennen mit Nagios

Mit Hilfe von Nagios können Rechner und deren Dienste als auch fast beliebige Netzwerkgeräte überwacht werden.
Typischerweise werden Server mit Unix/Linux- und MS-Windows oder auch Router und Switche überprüft.

Nagios kann helfen, Probleme rechtzeitig zu erkennen. Benachrichtigungen können je nach Ausfall an die jeweils verantwortlichen gesendet werden, ob nun als Email, Pager oder SMS. Dies kann dazu führen, Ausfälle zu vermeiden oder zu verkürzen.

Homepage: http://www.nagios.org/

Überblick

Der Nagios-Daemon startet periodische Tests auf entfernte Rechner, Netzwerkgeräte und Daemonen/Dienste.

Diese Tests geschehen über externe Plugins, welche eine Status-Information des angefragten Dienstes/Rechners an Nagios zurück geben. Die abfragenden Plugins können relativ einfach in Shell, Perl, C oder anderen Sprachen erstellt oder angepasst werden.

Auf aktuelle Status-Informationen, historische Vorkommnisse und Statistiken kann per Web-Browser zugegriffen werden.

Installieren von Nagios

Voraussetzungen

Auf dem Linux müssen folgende Pakete für Nagios und dessen Plugins installiert sein: Der Apache, gcc, gd-libs, openssl-libs, gnutls-libs, samba-client, ntpdate, net-snmp und das Perlmodul Net::SNMP.

Für CentOS 5 oder RedHat 5 ist dafür folgendes aufzurufen:

yum install httpd gcc gd-devel gd openssl-devel gnutls-devel samba-client ntpd net-snmp net-snmp-utils
perl -MCPAN -e 'install Net::SNMP'

Installation

Die neueste Version von Nagios herunter laden von http://www.nagios.org/download und ablegen unter /usr/local/src/.

Sourcen auspacken unter /usr/local/src mit:

cd /usr/local/src
tar xvzf nagios-3.05.tar.gz
cd nagios-3.05

Den User nagios anlegen, unter welchem der Nagios-Daemon laufen soll:

adduser -m nagios
passwd nagios

groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache

Das Hauptverzeichnis für Nagios anlegen und Rechte setzen:

mkdir /usr/local/nagios
chown nagios.nagios /usr/local/nagios

Ermitteln des Users, unter dem der Apache läuft. Die Apache-Konfigurationsdatei ist zu durchsuchen, z.B. für RedHat/CentOS mit

grep "^User" /etc/httpd/conf/httpd.conf

Gruppe anlegen, den ermittelten Apache-User aus dem obigen grep ist in der 2. Zeile einzugeben (hier apache):

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd apache
/usr/sbin/usermod -G nagcmd nagios

Nun endlich kompilieren und installieren von Nagios mit:

./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode

make install-webconf

Installieren der Default-Plugins

Download der aktuellen Plugins in das /usr/local/src/ Verzeichnis.

Alles wird erledigt mit folgenden Kommandos:

tar xvzf nagios-plugins-1.4.10.tar.gz
cd nagios-plugins-1.4.10
./configure
make
make install

Apache und CGI konfigurieren

Ab Nagios 2.10 ist eine Konfiguration des Apache selbst nicht mehr notwendig, wenn wie oben beschrieben bei der Installation make install-webconf ausgeführt wurde.

Trotzdem kann auf die URL http://localhost/nagios noch nicht zugegriffen werden.

Um das zu ermöglichen, sollte ein User nagiosadmin mit Passwort angelegt werden mit:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Nun kommt man zwar auf die Seite, kann aber nur die Startseite und die Dokumentation sehen. Das liegt u.a. an fehlenden Berechtigungen.

Es sind folgende Zeilen in der Datei /usr/local/nagios/etc/cgi.cfg einzukommentieren und anzupassen:

authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin

Testen und Starten

Nagios wird auf korrekte Konfiguration geprüft mit:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Alles scheint soweit OK, wenn die letzten Zeilen der Ausgabe so aussehen:

Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

Nun sollte der Daemon gestartet werden können mit:

/etc/init.d/httpd restart
/etc/init.d/nagios start

Nun sollte http://localhost/nagios aufrufbar sein. Da noch keine zu überwachende Hosts/Services eingebunden sind, sind nur einige Daten über den Nagios-Server selbst zu sehen.

Um den Start zu automatisieren, sind Softlinks zu erstellen wie die folgenden:

ln -s /etc/init.d/nagios /etc/rc3.d/S81nagios
ln -s /etc/init.d/nagios /etc/rc5.d/S81nagios
ln -s /etc/init.d/nagios /etc/rc3.d/K01nagios
ln -s /etc/init.d/nagios /etc/rc5.d/K01nagios

Konfiguration

Es sind Beispielkonfigurationsdateien abgelegt unter /usr/local/nagios/etc. Nagios verwendet für Konfigurations-Dateien als Endung .cfg

nagios.cfg

Dies ist die Hauptkonfigurations-Datei.

Zwei Anpassungen sollten hier zunächst gemacht werden. Zum einen wird hier definiert, welche weiteren Dateien eingebunden werden. Die Schlüsselwörter dazu sind cfg_file und cfg_dir. Bei cfg_dir werden alle Unterverzeichnisse mit eingelesen. Damit kann der Übersicht halber eine Ordnerstruktur angelegt werden wie z.B.:

/usr/local/nagios/etc/server
|
|--/usr/local/nagios/etc/server/windows
|
|--/usr/local/nagios/etc/server/linux

Beispiel:

cfg_dir=/usr/local/nagios/etc/server
cfg_dir=/usr/local/nagios/etc/router

Als weiteres sollte das Datum-Format angepasst werden:

date_format=euro

Objekte einrichten

Nagios nennt PCs (host), Dienste (service), PC-Gruppen (hostgroup), Kontakte (contact), Befehle (command) etc. Objekte, die definiert werden müssen.

Dies geschieht über Einträge wie diesem:

define host {
   name testserver
   Schlüsselwort2 Wert2
}

Um die Übersicht zu behalten, ist es dringend anzuraten, sich die Struktur der Definitionen der Objekte genau zu überlegen. Theoretisch kann alles in eine Datei geschrieben werden, übersichtlicher scheint aber eine Untergliederung der Dateien in Unterverzeichnisse so wie oben beschrieben.

Über Vererbung kann Schreibarbeit reduziert werden. Darüber können Definitionen, welche für viele Objekte zutreffen, in einer Definition beschrieben werden und können dann mit einem use eingebunden werden, siehe /usr/local/nagios/etc/templates.cfg.

Interessante Links oder Artikel in Zeitungen

Größtenteils deutsche Dokumentation

Nagios wurde besprochen in:

Netsaint wurde im Linux-Magazin 09/2002 besprochen:

Live-CD basierend auf Knoppix 4.0x unter

Alternative

Wem nagios zu gross und zu komplex ist, oder wer keine Benachrichtigungen braucht, der soll sich gerne mal munin anschauen.

Nagios (zuletzt geändert am 2008-11-07 19:49:12 durch e176008005)