Backup mit Nagios überwachen

closeDieser Beitrag wurde vor über 3 Monaten veröffentlicht. Die darin beschriebenen Informationen sind mit Vorsicht zu geniessen, da sie bereits veraltet oder nicht mehr gültig sein könnten. Solltest du von Neuerungen oder Verbesserungen wissen, so freue ich mich über einen klärenden Kommentar.

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:

close
Immer informiert sein dank meines RSS Feeds.Oder folge mir via Twitter!

8 Gedanken zu „Backup mit Nagios überwachen

  1. Noname

    Damit ist aber noch nicht gewährleistet ob das Backup erfolgreich war. Der FTP-Transfer kann fehlerhaft gewesen sein oder das packen in ein Archivfile. Man könnte aber ggf. die Dateigrößen zwischen Backupserver und lokal prüfen.

    Antworten
    1. Patrick Artikelautor

      Durchaus richtig, nur jede vernünftige Backuplösung sollte sich melden, wenn während dem Backup ein Fehler passiert. Und genau das tut auch meine Lösung.
      So bleibt nur noch die Frage offen, ob das Backup überhaupt startet, was Nagios mir somit sagen kann.

      Antworten
  2. Shogun

    Sehr gute Lösung und gute Erklärung. Eine kleine Verbesserung hätte ich für Zeile 9 und 10 des Skripts:

    COMPARE=date -d “8 days ago” “+%s”

    Damit fällt ACTUAL und die Shell-Rechenoperation weg.

    Antworten
  3. killermoehre

    Eine sauberere Methode wäre es, in das Backup-Script ein send-nsca einzubauen und den Erfolg oder Misserfolg an Nagios als passiven Check zu pushen. Im Nagios würde dann eine Verfallsrate von einer Woche und einem Tag eingestellt werden.Somit entfällt das regelmäßige Pollen des FTP-Servers, was zu Problemen führen kann.

    Antworten

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <b> <blockquote cite=""> <cite> <del datetime=""> <em> <i> <pre lang="" line="" escaped=""> <strong>