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.