Translations of this page:

Makros

check_multi interpretiert Makros wie Nagios selber, z.B. $HOSTNAME$ oder $HOSTADDRESS$. Damit ist es u.a. moeglich, ein cmd-File fuer mehrere Hosts zu verwenden:

command[ network_ping ] = check_icmp -H $HOSTADDRESS$ -w 500,5% -c 1000,10%

Die Liste der in Nagios 3 verfuegbaren Makros befindet sich hier.

Makros zur Laufzeit

Fuer jedes Kommando werden nach der Ausfuehrung zwei Werte gespeichert

  1. Der Returncode (RC) in der Variablen $STATE_<command_tag>$
  2. Der Output in der Variablen $<command_tag>$

Diese Werte koennen als Makros in nachfolgenden Kommandos verwendet werden.

Makros aus Nagios uebernehmen

Natuerlich funktionieren die Nagios-Makros nicht, wenn ein Plugin remote ausgefuehrt wird. Dann kann man sich helfen, indem man z.B. -H localhost angibt. Oder man verwendet die --set-Option, um Environment-Variablen ueber die Kommandozeile anzugeben.

Beispiel:

check_multi -f <xyz.cmd> -s HOSTNAME=$HOSTNAME$

Achtung: Macro-Namen sind case sensitive - so ist z.B. -s HOSTNAME=host123 etwas anderes als -s hostname=host123. In cmd-Dateien wird das erste mit $HOSTNAME$ angewaehlt, waehrend das zweite mit $hostname$ angesprochen wird.

Ondemand-Makros verwenden

Nagios Ondemand-Makros (vgl. auch hier) koennen von check_multi dafuer verwendet werden, die Stati oder sonstige Attribute von fremden Host- oder Servicechecks in den eigenen Check zu uebernehmen. Dafuer muss aber Nagios in der Servicedefinition mitgeteilt werden, welche Daten zur Laufzeit uebergeben werden sollen.

Am besten wird das an einem kleinen Beispiel deutlich. Angenommen, unser Service ueberwacht eine Web-Applikation myapp. Sie soll noch zusaetzlich den Status der Ueberwachung der vorgeschalteten Firewall mywall beruecksichtigen. Zwei Schritte sind dafuer erforderlich:

  1. check_multi Aufruf:
    check_multi -f myapp.cmd -s MYWALL_STATEID=$SERVICESTATEID:myhost:mywall$ -s MYWALL_OUTPUT="$SERVICEOUTPUT:myhost:mywall$"
    
  2. command-Datei:
    # myapp.cmd
    command [ myapp  ] = check_http -H myhost -u 'http://myapp'
    command [ mywall ] = ( echo "$MYWALL_OUTPUT$"; exit $MYWALL_STATEID$ )
    

Achtung: bitte auf das Quoting achten - waehrend der Output als String in Anfuehrungszeichen stehen muss, darf die StateID als numerischer Wert keine Anfuehrungszeichen erhalten.

Der kombinierte Aufruf von OUTPUT und STATEID sorgt dafuer, dass in dem Multi-Check die Ergebnisse des mywall-Checks quasi eins zu eins uebernommen werden, ohne nochmals den Befehl fuer den Check ausfuehren zu muessen.

de/projects/check_multi/configuration/macros.txt · Zuletzt geƤndert: 2009/07/08 12:44 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