Mittwoch, 25. Mai 2011

(Nagios) SMS senden via sms4.de

Ich hätte da mal wieder eine Howto von gestern

Auf dieser Seite:


es kann ja mal vorkommen das es wichtige Ereignisse in der Infrastruktur gibt welche uns zwar von Nagios gemeldet werden aber wir sind im Wochenende oder ähnliches. Handelt es sich hierbei Aber zb um das Mailgate oder die Klimaanlange interessiert es uns ja bestimmt doch.

Einfache Lösung!?! Einfach per sms benachrichtigen.

Mit einem Anbieter wie http://sms4.de geht es hierbei wohl am einfachsten. Aber der Reihe nach.

Schritt 1

Einen Kontakt anlegen.
Hierzu legt man eine datei contacts.cfg an und in dieser einen Kontakt. Der Einfachheit halber und damit man Kontakte unterscheiden kann lege ich zu jedem User der eine SMS bekommen will in der Datei contacts-sms.cfg einen sms Kontakt an.

define contact{
contact_name Testuser-sms
alias Ein test user
service_notification_period 24x7
host_notification_period 24x7
service_notification_options u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-sms
host_notification_commands host-notify-by-sms
pager 49123456789
}

Für üns interessant ist hierbei die Angabe Pager, hier lässt sich nun eine Handynummer eintragen.
Wichtig! ist auch das der Eintrag der notification richtig gesetzt ist.

Schritt 2

Ein Befehlsskript findet man unter sendsms4.py welches ich in python geschrieben habe. Nun muss man diesen Befehl noch in Nagios anlegen.
Eine Datei misccommands.cfg enthält das script

define command{
command_name    notify-by-sms
command_line /usr/local/bin/sendsms4.py $CONTACTPAGER$ "$NOTIFICATIONTYPE$: $HOSTNAME$: $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)"
}


Somit ist nun möglich das ganze Abzuschicken.

Schritt 3

Nun müssen wir noch einmal alles verheiraten. Hierzu habe ich in der Datei contactgroups.cfg Eine Gruppe für die neuen sms Kontakte angelegt. Nun wird bei jedem Service, die notification auf unserer sms gruppe gesetzt. Hier die linux-admins-sms

define service{
host_name linux-server
service_description check-disk-sda1
check_command check-disk!/dev/sda1
max_check_attempts 5
normal_check_interval 5
retry_check_interval 3
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups linux-admins-sms
}

Und das War es auch schon!


Skript Nachtrag


damit mein Python Skript auch richtig funktioniert gibt es ein paar Sachen zu beachten.

  1. 1 Die Konfiguration bzgl der Zugangsdaten findet im Skript statt, also einfach Ihre Accountemail nehmen und dann die Daten einfügen.

  1. 2 Es gibt eine log Datei. Diese muss aber von Hand angelegt und frei gegeben werden. Natürlich ist der Pfad der Datei auch im Quelltext editierbar. Per default sollten sie so vorgehen


echo '' > /var/log/sendsms4.log

chmod 777 /var/log/sendsms4.log