Backup mit Nagios überwachen

Nagios ist so ziemlich mein Liebling unter Linux, weil man praktisch alles damit machen kann. Und so versuchte ich mich vor kurzem daran, auch das Backup unserer Server mittels Nagios prüfen zu lassen. Interessiert hat mich dabei, wie alt das letzte Backup ist und falls dieses älter als eine Woche sein sollte, muss es natürlich eine Warnung geben.
Zu den Umständen muss noch gesagt werden, unser Backup ist via FTP erreichbar und wird in einem Archiv mit dem Erstellungsdatum im Name abgelegt, also nach folgendem Muster:

backup_2012-10-17_01-00-42_(Full).7z

Somit habe ich mir ein kleines Bash-Script zurechtgelegt und dabei das kleine, aber sehr nützliche Tool ncftpls verwendet. Dieses ist im Stande, auf einen FTP zu verbinden und auf diesem ein ls -l auszuführen und den Output als ganzes wieder an die normale Konsole zu übergeben, damit mit diesem weitergerechnet werden kann. Und daraus ist zuerst folgender Filter entstanden, um das Datum des letzten Backups in eine Variable zu speichern:

DATE=`ncftpls -x "-l" -u $USER -p $PASSWORD ftp://$SERVER | grep ".7z" | tail -1 | cut -d'_' -f2`

Damit auch verglichen werden kann, wird auch das aktuelle Datum zwischengespeichert und von diesem gleich eine ganze Woche abgezogen:

CREATED=`date -d "$DATE" "+%s"`
COMPARE=`date -d "8 days ago" "+%s"`

Nun nur noch eine Überprüfung und gut ist:

if [ $COMPARE -lt $CREATED ]
        then exit 0
        else exit 1
fi

Ein bisschen ausgeschmückt und das fertige Skript sieht wie folgt aus:

#!/bin/bash
USER=$1
PASSWORD=$2
SERVER=$3

DATE=`ncftpls -x "-l" -u $USER -p $PASSWORD ftp://$SERVER | grep ".7z" | tail -1 | cut -d'_' -f2`
CREATED=`date -d "$DATE" "+%s"`

COMPARE=`date -d "8 days ago" "+%s"`

echo "Last Backup from" `date -d "$DATE" "+%d.%m.%Y"`

if [ $COMPARE -lt $CREATED ]
        then exit 0
        else exit 1
fi

Dieses kommt in den Ordner nagios/libexec und muss natürlich noch dem Nagios-User zugeordnet werden.
Danach kann im commands.cfg ein neues Kommando definiert werden:

#check last Backup
define command {
        command_name check_backup
        command_line $USER1$/check_backup $ARG1$ $ARG2$ $ARG3$
        }

Und nun fehlt nur noch ein passender Service unter hosts.cfg:

define service{
        use                     generic-service
        host_name               SERVER01
        service_description     Last Backup
        check_command           check_backup!"FTPUSER"!"FTPPASSWORD"!"FTPSERVER"
        }

Neuladen und schon gibt Nagios auch das letzte Backup an:

8 comments

Schreibe einen Kommentar

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