Translations of this page:

Konfigurationen ueberladen

Die Moeglichkeit, check_multi mehrere Konfigurationsdateien zu uebergeben, kann fuer eine sehr flexible Konfiguration genutzt werden. Speziell in grossen Umgebungen kann dies eine Menge Konfigurationsaufwand ersparen.

Parser-Implementierung

Um das Ueberladen der Konfiguration zu verstehen, muessen wir uns die Implementierung des Parsers fuer die Konfigurations-Datei anschauen. Wann immer dieser Parser eine Kommandozeile liest wie die folgende:

# foo.cmd
command [ foo ] = /bin/echo is foo

schaut er in seine Liste und sucht nach einem Eintrag mit dem Namen foo. Wenn es diesen Eintrag noch nicht gibt, speichert er es als neuen Eintrag in der Liste.
Wenn es aber schon einen foo-Eintrag gibt, wird der alte mit dem neuen ueberschrieben.

Ueberladen

Wenn es z.B. eine zweite Datei gibt namens bar.cmd, die die folgende Definition enthaelt:

# bar.cmd
command [ foo ] = /bin/echo is bar

und wir diese Datei nach der ersten Datei foo.cmd laden, dann findet der Parser das schon gespeicherte foo Kommando (/bin/echo is foo) und ueberschreibt es mit dem Kommando /bin/echo is bar.

Kleine Debug-Session

nagios ~> libexec/check_multi -f foo.cmd -r 0
 OK - 1 plugins checked, 0 critical, 0 warning, 0 unknown, 1 ok
[ 1] foo is foo
nagios ~> libexec/check_multi -f bar.cmd -r 0
 OK - 1 plugins checked, 0 critical, 0 warning, 0 unknown, 1 ok
[ 1] foo is bar
nagios ~> libexec/check_multi -f foo.cmd -f bar.cmd -r 0
 OK - 1 plugins checked, 0 critical, 0 warning, 0 unknown, 1 ok
[ 1] foo is bar
  1. check_multi liest foo.cmd und fuehrt /bin/echo foo aus.
  2. bar.cmd wird ausgefuehrt und gibt bar aus.
  3. Das foo.cmd-Kommando echo foo wird ueberladen durch bar.cmd: check_multi zeigt bar.

Vorteile des Ueberladens

Lassen Sie uns nun anschauen, wie wir dieses Verhalten verwenden koennen, um die Konfiguration zu vereinfachen.

So koennen zum Beispiel alle Linux-spezifischen Checks in die Linux.cmd wandern, waehrend alle Solaris-spezifischen Checks in der Datei SunOS.cmd landen. Und wenn noch ein Spezialfall fuer den Host specialhost zu konfigurieren ist, so kann das in der Datei specialhost.cmd geschehen.

Beispiel: Das Syslog soll daraufhin ueberprueft werden, ob wenigstens einmal am Tag hineingeschrieben wird. Das Linux.cmd wuerde zum Beispiel die folgende Zeile enthalten:

command [ syslog ] = check_file_age -c 86400 /var/log/messages

waehrend das Solaris.cmd das syslog natuerlich im Verzeichnis /var/adm suchen wuerde.

command [ syslog ] = check_file_age -c 86400 /var/adm/messages

Und zum Schluss kommt unser specialhost und soll gar kein syslog monitoren:

command [ syslog ] = /bin/echo "Check disabled, Matthias Flacke, 19.11.2007"

Dazu noch die entsprechenden Auszuege aus der Nagios-Konfiguration:

Die spannende Zeile ist die

check_command check_multi!-f $_HOSTOS$.cmd!-f $HOSTNAME.cmd

wo naemlich der OS-spezifische Teil zuerst ausgewertet und ggf. durch den Host-spezifischen Teil ueberladen wird.

# overload.cfg
define host{
   host_name linuxhost
   _OS       Linux
}
define host{
   host_name solarishost
   _OS       SunOS
}
define host
   host_name specialhost
   _OS       SunOS
}
define command {
   command_name check_multi
   command_line $USER1$/check_multi $ARG1$ $ARG2$ $ARG3$ $ARG4$
}
define service
   name          system_checks
   host_name     *
   check_command check_multi!-f $_HOSTOS$.cmd!-f $HOSTNAME.cmd
}
de/projects/check_multi/configuration/overload.txt · Zuletzt geƤndert: 2008/10/17 10:11 von flackem
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0