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.