Nagios Benachrichtigungen per SMS verschicken

Nagios SMS Benachrichtigung

Mit einer kleinen Erweiterung lassen sich Benachrichtigungen von Nagios auch per SMS verschicken. Hierzu wird allerdings ein SMS Gateway benötigt. Der Dienst BulkSMS ist aufgrund seiner gut dokumentierten API, recht günstiger Preise und einfacher Bezahlung eine gute Wahl.

Dieses Tutorial beschreibt die Konfiguration von Nagios zum Versand von Benachrichtigungen per SMS. Vorraussetzung für dieses Tutorial ist ein Account bei BulkSMS inkl. Credits.

Schritt 1: Script anlegen

Izak Burger hat für die Kommunikation mit BulkSMS ein kleines Python Script (bulksms.py) geschrieben, welches für den deutschsprachigen BulkSMS Dienst nur noch leicht angepasst wurde. Zuerst wird das Script folgendermaßen angelegt:

nano /usr/lib/nagios3/bulksms.py

Hier fügt man Folgendes ein. Benutzername und Passwort für BulkSMS müssen in der Datei hinterlegt werden.

#!/usr/bin/python
#
# Read message from stdin and send via buksms gateway

import sys, httplib, urllib

username = "bulksms-benutzername"
password = "bulksms-passwort"

if len(sys.argv)!=2:
sys.stderr.write("Usage: %s msisdn\n"%sys.argv[0])
sys.exit(1)

# Read message body from stdin
text = sys.stdin.read()

params = urllib.urlencode({'username':username, 'password':password, 'message':text[:160], 'msisdn':sys.argv[1]})
conn = httplib.HTTPConnection("bulksms.de:5567")
conn.request("GET", "/eapi/submission/send_sms/2/2.0?%s" % params)
response = conn.getresponse()
status=response.status
response.read()
conn.close()

# Check that response.status == 200
if status != 200:
sys.exit(2)

sys.exit(0)
# vim: set ts=4 sw=4 expandtab:

Damit nicht jeder Zugriff auf Benutzername und Passwort bekommt, aber Nagios noch immer darauf zugreifen kann und die Datei ausführbar wird, müssen die Berechtigungen auf die Datei entsprechend angepasst werden.

chown root:nagios /usr/lib/nagios3/bulksms.py && chmod 750 /usr/lib/nagios3/bulksms.py

Schritt 2: Script Testen

Ist das Script angelegt, kann dieses nun getestet werden. Das Script ließt von stdin und benötigt eine Mobilnummer im internationalen Format.

echo "Test" | /usr/lib/nagios3/bulksms.py 491509999999

Schritt 3: Notification Command definieren

nano /etc/nagios3/commands.cfg

Die Datei wird folgendermaßen ergänzt:

# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%b" "Notification Type: $NOTIFICATIONTYPE$ - Host: $HOSTNAME$ - State: $HOSTSTATE$ - Address: $HOSTADDRESS$ - Info: $HOSTOUTPUT$ - Date/Time: $LONGDATETIME$\n" | /usr/bin/python /usr/lib/nagios3/bulksms.py $ARG1$
}

# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%b" "Notification Type: $NOTIFICATIONTYPE$ - Service: $SERVICEDESC$ - Host: $HOSTALIAS - Address: $HOSTADDRESS$ - State: $SERVICESTATE$ - Date/Time: $LONGDATETIME$ - Additional Info: $SERVICEOUTPUT$\n" | /usr/bin/python /usr/lib/nagios3/bulksms.py $ARG1$
}

Schritt 4: Kontakte anpassen

nano /etc/nagios3/conf.d/contacts_nagios2.cfg

Hier ergänzt man die Kontakte, welche per SMS benachrichtigt werden sollen, folgendermaßen:

define contact{
contact_name                    root
alias                           Root
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,r
service_notification_commands   notify-service-by-email
host_notification_commands      notify-host-by-email
service_notification_commands   notify-service-by-sms!<mobilnummer>
host_notification_commands      notify-host-by-sms!<mobilnummer>
email                           amdin@unternehmen.com
}

Schritt 5: Neustart von Nagios

/etc/init.d/nagios3 restart

Schreibe einen Kommentar

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