Nagios Festplatten, Swap, SMTP, Postfix Mail Queue, SSH und HTTP überwachen

Nagios ist selbstverständlich auch in der Lage die Auslastung von Festplatten bzw. Dateisystemen und zahlreichen anderen Diensten zu überwachen. Hier ein Beispiel wie man Festplattenauslastung, Swap, SMTP, Postfix Mail Queue, HTTP und SSH überwacht.

Fangen wir mit den Festplatten an. Zuerst muss man rausfinden, wie sich das Dateisystem auf dem zu überwachenden Server nennt. Dazu unter Debian einfach den Befehl

df -h

ausführen. Jetzt wird z.B. sowas angezeigt:

Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0        28G  2.8G   24G  11% /
udev             10M     0   10M   0% /dev
tmpfs           199M   21M  179M  11% /run
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           497M     0  497M   0% /sys/fs/cgroup
/dev/vda1       236M   33M  191M  15% /boot

Die Dateisysteme lassen sich natürlich auch einzeln überwachen, aber für dieses Beispiel wollen wir gewarnt werden, wenn der Festplattenplatz auf dem Server eng wird. Daher wählen wir das Haupt-Filesystem /dev/dm-0.

Jetzt müssen wir den check_disk NRPE-Befehl entsprechend anpassen. Dazu die nrpe.cf Datei öffnen...

nano /etc/nagios/nrpe.cfg

und dann die Zeile suchen in der das check_disk command definiert wird. I.d.R. lautet das in etwa so:

command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1

Das hda1 tauschen wir aus gegen den Namen unseres Dateisystems, also dm-0, so dass in diesem Fall dort dann steht:

command[check_dm-0]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/dm-0

Jetzt fügen wir noch commands für Swap und Mail Queue hinzu. Beide sind im Standard Plugins Paket von Nagios enthalten.

command[check_mailq]=/usr/lib/nagios/plugins/check_mailq -w 10 -c 20
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 5 -c 3

Jetzt noch den Dienst neustarten.

service nagios-nrpe-server restart

Das war's für den Server. Jetzt wechseln wir zum Monitor mit der Nagios Installation. Ich gehe davon aus, dass eine Config Datei für den Server schon existiert. Ansonsten bitte die vorherigen Nagios Tutorials kurz durchspielen.

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

Hier sollten neben dem define host Block jetzt neue Services hinzugefügt werden, die die vorher definierten Kommandos ausführen.

define host{
        use             generic-host
        host_name       server1
        alias           server1
        address         10.11.12.13
}
define service{
        use                     generic-service
        host_name               server1
        service_description     Disk Space
        check_command           check_nrpe_1arg!check_dm-0
}
define service{
        use                     generic-service
        host_name               server1
        service_description     Mail Queue
        check_command           check_nrpe_1arg!check_mailq
}
define service{
        use                     generic-service
        host_name               server1
        service_description     Swap
        check_command           check_nrpe_1arg!check_swap
}

Jetzt können wir noch ein paar generische Dienste definieren, z.B. ein Zustandscheck der SMTP- oder SSH- oder HTTP-Server. Dazu folgende Datei öffnen:

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

Und dann Services wiefolgt definieren:

# check that http servers are running
define service {
        hostgroup_name                  http-servers
        service_description             HTTP
        check_command                   check_http
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

# check that ssh servers are running
define service {
        hostgroup_name                  ssh-servers
        service_description             SSH
        check_command                   check_ssh
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

# check that smtp servers are running
define service {
        hostgroup_name                  mail-servers
        service_description             SMTP Server
        check_command                   check_smtp
        use                             generic-service
        name                            smtp
        notification_options            w,c,r
}

Wie man sieht werden hier sogenannte Hostgroups definiert. Der Vorteil ist, dass diese Dienste nicht Server-spezifisch sind, sondern global und für viele Server gleichzeitig interessant sind. Jetzt brauchen wir nur noch die Hostgroups definieren und dann beliebige Server aus dem Netzwerk in die Hostgroups einhängen. Das geht so:

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

Die neuen Hostgroups können - sofern nicht bereits vorhanden - ans Ende angefügt werden. Die Datei sollte am Ende z.B. so aussehen:

# Some generic hostgroup definitions

# A simple wildcard hostgroup
define hostgroup {
        hostgroup_name  all
                alias           All Servers
                members         *
        }

# A list of your Debian GNU/Linux servers
define hostgroup {
        hostgroup_name  debian-servers
                alias           Debian GNU/Linux Servers
                members         localhost,mail,web1,mysql1
        }

# A list of your web servers
define hostgroup {
        hostgroup_name  http-servers
                alias           HTTP servers
                members         localhost,mail,web1
        }

# A list of your ssh-accessible servers
define hostgroup {
        hostgroup_name  ssh-servers
                alias           SSH servers
                members         localhost,mail,web1,mysql1
        }

# A list of your mail servers
define hostgroup {
        hostgroup_name  mail-servers
                alias           Mail servers
                members         mail,web1
        }

Unter hostgroup_name muss immer exakt der Bezeichner stehen, der vorher in der services Datei gewählt wurde. Unter members müssen kommasepariert die Hostnamen der Server stehen, die entsprechend überwacht werden sollen.

Auch hier jetzt noch den Dienst neustarten

service nagios3 restart

Und mehr ist nicht zu tun. Die Dienste werden jetzt von Nagios überwacht.