Wie bereits in Teil 2 geschrieben wird Software ja nie richtig fertig 
Da wir in der Firma uns hauptsächlich über Business Prozesse per Mail oder SMS benachrichtigen lassen und der Informationsgehalt dieser Nachrichten immer ziemlich mager war, habe ich jetzt noch eine Anbindung an NagiosBP geschaffen. Bisher mussten wir uns bei einer Benachrichtigung immer einloggen und im Icinga den entsprechenden Business Process genauer analysieren.
In der neuen Version 0.2.0 des Skripts gibt es jetzt einen eigenen Block, in welchem die einzelnen Services des Business Processes angezeigt werden können.

Konfiguriert wird das ganze über 3 Parameter
[--nagiosbp_url http://icinga.localdomain/nagiosbp/cgi-bin/nagios-bp.cgi]
Hier kommt die URL zum nagios-bp.cgi hin. Diese URL wird dann im Skript entsprechend der anderen Parameter erweitert, so dann anschließend etwas in der Art
http://icinga.localdomain/nagiosbp/cgi-bin/nagios-bp.cgi?outformat=json&tree=test_bp&conf=MYCONF
rauskommt.
Sollte es an irgendeiner Stelle zu Problemen kommen, kann mit einem –debug 1 eine Ausgabe auf der Konsole erzeugt werden.
Folgendes sollte eigentlich ausreichen. Die anderne Variablen erzeugen zwar Fehler, können aber ignoriert werden (Mail ist dann eben leer):
./icinga_mail.pl --debug 1 --smtphost 127.0.0.1 --icinga_url http://icinga.localdomain/icinga/ --pnp4nagios_url http://icinga.localdomain/pnp4nagios/ --nagiosbp_url "http://icinga.localdomain/nagiosbp/cgi-bin/nagios-bp.cgi" --nagiosbp_conf "MYCONF" --originator icinga@localhost --recipient jens@localhost --servicedesc check_bp_test |
[--nagiosbp_conf MYCONF]
NagiosBP unterstützt ja mittlerweile mehrere Konfigurationen. Wenn keine angegeben wird, sollte automatisch der Standard verwendet werden. (Noch nicht getestet, da wir keine “Standard-Konfiguration im Einsatz haben).
[--nagiosbp_state OK,WARNING,CRITICAL,UNKNOWN]
Da die Liste der Services unter Umständen ziemlich lang werden kann, kann hier eingeschränkt werden, welche Status mitgeliefert werden sollen.
Normalerweise sollte –nagiosbp_state WARNING,CRITICAL,UNKNOWN vollkommen ausreichen. Wer alles möchte, nimmt einfach das obengenannte Beispiel.
Damit das ganze auch ohne Probleme funktioniert, sind zwei Voraussetzungen zu erfüllen:
Alle Business-Process-Services müssen mit einem check_bp_ beginnen und mit dem entsprechenden Namen aus der nagios-bp.conf oder einer eigenen *.conf aufhören.
Für einen Business-Prozess mit der Definition
test = server1.localdomain;check_ping & server1.localdomain;check_load
display 4;test;Test-BP |
Muss folgender Service unter Icinga angelegt werden:
define service {
host_name server1.localdomain
service_description check_bp_test
...
} |
Die service_description muss leider so heißen, da zur Ermittlung der JSON-URL der letzte Teil der Servicedescription herangezogen wird.
# transform icinga_servicedesc in nagiosbp_servicedesc (remove check_bp_ from icinga_servicedesc to match nagiosbp servicedesc in conf)
$icinga_servicedesc =~ s/check_bp_//;
# build root nagiosbp_url json url
my $nagiosbp_json_url = $nagiosbp_url . "?outformat=json" . "&tree=$icinga_servicedesc" . "&conf=$nagiosbp_conf"; |
Download über code.google.com.
Issues und Feature-Requests dort einkippen. Über Rückmeldungen, wie sich das Skript in andere Plattformen integrieren lässt, würde ich mich freuen.