Donnerstag, 17. Februar 2011

Bacula und Nagios

Wenn man eine Monitoring Lösung wie Nagios am Start hat, dann möchte man Zwangsläufig das die Backuplösung sich hier integriert. Wenn man dann sich umschaut, findet man einiges an HowTo Lösungen, die irgendwie alle nicht so recht wollten.
Ich habe mich jetzt mal einen Tag mit der Problematik befasst und fasse mal zusammen was man tun muss...

Schritt 1: PASSIV CHECK
Bacula soll nach beendetem Job uns eine Information geben was mit dem Job passiert ist, hierzu erstellen wir einen Passivcheck innerhalb von Nagios, dieser könnte so aussehen
define service {
hostgroup_name     bacula
service_description bacula-fd
use                          generic-service
check_command     check_dummy_crit
max_check_attempts 1
check_interval       1440
retry_interval        1440
check_period        workhours
notifications_enabled 0
register 1
}
check_dummy_crit ist hierbei das check_dummy script, welches immer critical ist, es sei denn es wird, in unserem Fall von Bacula, auf critical gesetzt.

Schritt 2: Bacula2Nagios
Wir brauchen für Nagios ein Script, dieses soll dafür sorgen das die Information von Bacula an nagios übermittelt wird. Hierbei müssen wir beachten, dass dieses Script nur auf dem Director liegen muss!
Denn, wir werden später die Funktion RUN AFTER JOB benutzen, ich musste auch lange recherchieren bis mir auffiel das der Director diesen Aufruf macht und nicht der Client :-)
Unser Script sieht dann so aus:
#!/bin/bash
# Bacula2Nagios V1#
/usrbacula2nagios.sh
# args:
# $1: Job name
# $2: Status (0:OK)
# $3: Plugin Output
if [ $2 -eq 0 ]
then status=0
else status=2
fi
/bin/echo "$1;bacula-fd;$status;$3" | /usr/sbin/send_nsca -d ';' -c /etc/nagios/send_nsca.cfg -H <NAGIOSHOST>
MAN BEACHTE!: Es ist hierfür wichtig das der "Job name" auich gleich dem Hostname in Nagios ist.


Schritt 3: RUN AFTER JOB
Nun fügen wir in jede JobDefs folgende beiden Zeilen ein
 Run After Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 0 \"%e %l %v\""
Run After Failed Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 1 \"%e %l %v\""
Hierbei ist
  • %n : der Jobname
  • 0/1: der Nagios Wert 0: OK 1: CRIT
  • %e der Job exit status
  • %l der job level
  • %v das Zielvolume
Requirements:
  • Nagios
  • Bacula
  • NSCA
  • bash und vi:-)  
Viel Spass damit