Problematik: USB-Backup-Platten am Server sind normalerweise nicht gemounted, sondern mondo-rescue mounted sie erst, wenn es ein Bakup schreiben will. Nach dem Bakup werden die USB-Platten wieder „unmounted“.
Das Nagios-plugin check_disk
kann aber nur Partitionen überwachen, die gemounted sind.
Lösung: neues Plugin schreiben, das die Partition ggf. mounted, dann check_disk
aufruft und schließlich die Partition wieder unmounted. Da Nagios während einem Bakup abgeschaltet wird, dürfte es keine Konflikte mit den mount-Befehlen geben.
Neues Plugin: /usr/lib/nagios/plugins/check_disk_partition
#!/bin/bash # # exit 0 OK # exit 1 warning # exit 2 critical helpmessage () { echo "Usage check_disk_partition -w <warning> -c <critical> -p <device> -m <mountpoint>" exit 0 } while getopts w:c:p:m:h opt do case $opt in w) warn=$OPTARG ;; c) critical=$OPTARG ;; p) device=$OPTARG ;; m) mountpoint=$OPTARG ;; h) helpmessage ;; esac done mounten="ja" mount | grep $device > /dev/null && mounten="nein" # Das device ist bereits gemounted if [ "$mounten" = "ja" ]; then mount $device $mountpoint || exit 2 fi /usr/lib/nagios/plugins/check_disk -w $warn -c $critical -p $device exitstatus=$? if [ "$mounten" = "ja" ]; then umount $device || exit 2 fi exit $exitstatus
Hinweis: Diese Datei muss vom Besitzer ausführbar sein!
Zur Beachtung: Das einfache script fängt keine unvorhergesehenen Fehler, wie z.B. dass der mountpoint oder das device nicht existiert, ab!
In einer neuen Datei z.B. testeusb.cfg
im Verzeichnis /etc/nagios3/conf.d
ist der neue Service einzutragen. Der verwendete mountpoint (hier: /mnt/usbplatte) muss auch angelegt werden. Ebenso muss ggf. der hostname angepasst werden. Das normal_check_interval ist dabei auf 1 Tag (1440 Minuten) gesetzt. Da Nagios nach der crontab-daily immer um 6.25 Uhr neu gestartet wird, gibt es immer morgens diesen check_disk_partition.
define command{ command_name check_disk_partition command_line sudo /usr/lib/nagios/plugins/check_disk_partition -w $ARG1$ -c $ARG2$ -p $ARG3$ -m $ARG4$ } define service{ use linuxmuster-service host_name server.schule.local service_description BACKUP-USB-Platte /dev/sdb1 notification_options w,u,c,r normal_check_interval 1440 retry_check_interval 1440 check_command check_disk_partition!40%!20%!/dev/sdb1!/mnt/usbplatte }
Und schließlich die Datei sudoers
mit visudo
editieren (da das script für den mount-Befehl root-Rechte benötigt) - einfach auf der Konsolo visudo
eintippen:
Die folgenden Zeilen mit check_disk_partition außerhalb der vom Nagios Paket angebrachten Kommentare ergänzen:
... # Manuell eingerichtete Nagios Checks Cmnd_Alias NAGIOS_MANUAL=/usr/lib/nagios/plugins/check_disk_partition nagios ALL=NOPASSWD: NAGIOS_MANUAL ...
Diese Änderungen überleben nun auch Paketupdates von linuxmuster-nagios
.
Zuletzt nach den Änderungen ist ein Neuladen der Konfiguration notwendig:
/etc/init.d/nagios3 reload
Probleme: Jede Partition hat einen maximalen mount-count, der durch das mounten von Nagios nun viel früher erreicht wird. Nach dem Erreichen des maximalen mount-count sollte die Partition mit e2fsck
kurz überprüft werden.