Installation und Konfiguration von Nagios und NRPE unter Debian

Nagios Network Map

Um auch bei komplexen IT-Infrastrukturen den Überblick zu behalten und eine schnelle Analyse und Problembehebung bei Ausfällen zu ermöglichen setzen viele Administratoren auf Nagios. Trotz einiger Konkurrenz durch freie aber auch durch kommerzielle Überwachungssoftware gilt Nagios insbesondere wegen seiner großen Verbreitung auch im professionellen Einsatz als Quasi-Standard.

Mit Nagios lässt sich im Grunde alles überwachen, das eine IP Adresse besitzt. Ist beispielsweise kein NRPE (Nagios Remote Plugin Executor) installiert, welcher Nagios mit detaillierten Systemdaten, wie Systemlast, Temperatur oder Speicherplatz versorgt, überprüft Nagios zumindest über einen regelmäßigen Ping, ob der Host erreichbar ist oder nicht.

Das folgende Tutorial beschreibt die Installation und Konfiguration von Nagios auf einem Debian System. Außerdem wird erläutert wie der Nagios Remote Plugin Executor (NRPE) auf einem zu überwachenden Server installiert und konfiguriert wird.

Installation und Konfiguration von Nagios unter Debian

Dank apt gestaltet sich die Installation von Nagios unter Debian sehr einfach.

Schritt 1: Installation von Nagios

apt-get install nagios3 nagios-plugins nagios-nrpe-plugin

Nach abgeschlossener Installation ist Nagios auch bereits per Browser erreichbar:

http://SERVER-IP-ADRESSE/nagios3/

Der Benutzername lautet „nagiosadmin“. Das Passwort wurde während der Installation selbst vergeben. Weitere Benutzer hinzufügen kann man mit folgendem Befehl:

htpasswd /etc/nagios3/htpasswd.users benutzername

Schritt 2: Neue Konfigurationsdatei erstellen

Im Anschluss an die Installation kann nun eine Konfigurationsdatei für den Server, welcher später überwacht werden soll, angelegt werden.

nano /etc/nagios3/conf.d/server1.cfg

Hier fügt man Folgendes ein (IP Adresse muss angepasst werden):

define host{
use generic-host
host_name server1
alias server1
address 192.168.0.XXX
}
define service{
use generic-service
host_name server1
service_description HTTP-Server
check_command check_http
}
define service{
use generic-service
host_name server1
service_description Current Load
check_command check_nrpe_1arg!check_load
}
define service{
use generic-service
host_name server1
service_description Current Users
check_command check_nrpe_1arg!check_users
}
define service{
use generic-service
host_name server1
service_description Disk Space
check_command check_nrpe_1arg!check_disk1
}
define service{
use generic-service
host_name server1
service_description Total Processes
check_command check_nrpe_1arg!check_total_procs
}

Die ‚use‘ variable in jedem Objekt gibt an, welches Template genutzt werden soll. Das generic-host Template in der Datei /etc/nagios3/generic-host_nagios2.cfg gefunden werden. Das generic-service Template wird in /etc/nagios3/generic-service_nagios2.cfg definiert.

Natürlich lassen sich Hosts und Services deutlich detaillierter konfigurieren. Eine Überblick über die zahlreichen Konfigurationsvariablen (Object Definitions) kann man in der Online-Dokumentation von Nagios einsehen.

Schritt 3: Neustart von Nagios

/etc/init.d/nagios3 restart

Installation und Konfiguration von NRPE

Ist der Nagios Server fertig installiert und konfiguriert, kann nun der erste Rechner in das Monitoring aufgenommen werden. Auch die Installation von NRPE lässt sich mit apt schnell und einfach durchführen.

Schritt 1: Installation von NRPE

apt-get install nagios-nrpe-server nagios-plugins

Schritt 2: NRPE Konfiguration anpassen

nano /etc/nagios/nrpe.cfg

Hier muss zunächst der Nagios Server zugelassen werden. Das lässt sich über eine entsprechende Anpassung von allowed_hosts (Zeile 79) bewerkstelligen. Hier muss die IP Adresse des Nagios Servers angegeben werden.

allowed_hosts=192.168.0.XXX

Ganz unten in der Datei (ab Zeile 200) finden sich die Befehle (Plugins) die mit den Services über „check_command“ aufgerufen werden und die Werte für das Monitoring ermitteln. Diese Befehle sollten dem entsprechenden System angepasst werden, insbesondere die Werte für check_load.

# The following examples use hardcoded command arguments...

command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 3,2,1 -c 4,3,2
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
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

Der Befehl zur Ermittlung des freien Festplattenspeichers (oben rot markiert) muss in der Regel angepasst werden. Zuerst ermittelt man dazu den Device-Pfad der zu überwachenden Festplatte bzw. Partition. Bei neueren Debian Systemen wird dieser über die uuid der Festplatte angegeben.

df -h

Die Ausgabe sieht in etwa folgendermaßen aus:

Filesystem Size Used Avail Use% Mounted on
rootfs 48G 1.1G 44G 3% /
udev 10M 0 10M 0% /dev
tmpfs 396M 204K 396M 1% /run
/dev/disk/by-uuid/b790eb74-0ef6-46e7-8e87-ae2ed9e257ef 48G 1.1G 44G 3% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.2G 0 1.2G 0% /run/shm

Nun kann die oben genannte Zeile in /etc/nagios/nrpe.cfg angepasst werden.

command[check_disk1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/b790eb74-0ef6-46e7-8e87-ae2ed9e257ef

Schritt 3: Neustart des NRPE

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

Nagios und NRPE sind nun fertig installiert und konfiguriert. Ein Blick auf das Webinterface von Nagios sollte sowohl localhost als auch den eben über NRPE angebundenen Server anzeigen.

Benachrichtigungen per E-Mail einrichten

Will man per E-Mail benachrichtigt werden, sobald ein Service in den Status „Critical“ wechselt, ist lediglich eine kleine Anpassung der Konfigurationsdatei contacts_nagios2.cfg nötig. Vorraussetzung für den Mailversand ist ein fertig konfigurierter MTA (z.B. exim).

nano /etc/nagios3/conf.d/contacts_nagios2.cfg

Hier können über „define contact“ Kontakte zur Benachrichtigung angegeben werden. Alle Kontakt müssen zusätzlich in der contactgroup angegeben werden.

define contact{
contact_name admin1
alias admin1
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email admin1@unternehmen.com
}
define contact{
contact_name admin2
alias admin2
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email admin2@unternehmen.com
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members admin1,admin2
}

Mit einer kleinen Erweiterung lassen sich übrigens auch Benachrichtigungen von Nagios per SMS verschicken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.