Voice Alarming mit Nagios und Asterisk

Bei besonders kritischen Services reicht es nicht aus eine Mail als Alarm zu erhalten. Ein Telefonanruf ist hier deutlich besser geeignet. Sein Handy hat man immer dabei und via Tonwahl lassen sich ggf. gleich Aktionen im Nagios ausführen (ACKNOWLEDGE, disable notficications). Eine kurze Internetrecherche hat mich zu einer Lösung von Netways zu diesem Problem geführt. Die dort beschriebene Lösung habe ich dann noch etwas angepasst, so dass die Anrufe von Asterisk über SIP an eine beliebige Telefonnumer geschickt werden. Hierzu rufe ich das Perlscipt call.pl wie folgt auf:

/usr/bin/printf "%b" "$MESSAGE" | /usr/lib/nagios/contrib/nagios2asterisk/call.pl -n $CONTACTPAGER -c 110 -C "SIP/$CONTACTPAGER@sipgate-out"

Im Asterisk ist unter sipgate-out die Verbindung zu meinem VoIP Provider (in diesem Falle sipgate) definiert. In $CONTACTPAGER steht die anzurufende Telefonnummer und in $MESSAGE die vorzulesende Nachricht. Damit die Alarme vom Nagios etwas besser verständlich werden, habe ich um das ganze noch ein wrapper script drum rum gebaut. Dieses schickt dann in Abhängigkeit vom Nagios Alarmtyp unterschiedliche Nachrichten ans Telefon. Zu den verwendeten Text2Voice Tools (MBROLA, TXT2PHO) gibt es auch einige Anmerkungen: Damit die MBROLA Binaries auf meinem Ubuntu x64 System laufen, musste ich erst noch (auch bei der x64 Version von MBROLA) das Paket libc6-i386 installieren. Ein . (Punkt) im vorzulesenden Text erzeugt eine Pause. Dieses Element sollte man durchaus nutzen um die Nachrichten verständlicher zu gestalten. Ich nutze zum Vorlesen die Stimme de5, da ich diese für am verständlichsten halte.

One thought on “Voice Alarming mit Nagios und Asterisk

  1. YES! nagios rockt bei den floek’s 🙂

    Finde ich gut und Klasse… Wenn man schon was zum monitoren hat, dann ist wirklich nagios die erste Wahl 🙂 Gratuliere zur erfolgreichen Umsetzung mit VoiceAlarming 🙂

    LG
    david

Schreibe einen Kommentar

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