Nagios Notify Messages per Twitter Directmessages senden
Nagios hat die Möglichkeit Nachrichten über den Status von Hosts und Service per E-Mail und per Pager zu versenden. Über den Pager kann z.B. eine SMS abgesetzt werden. SMS kosten Geld und Geld hat man ja nie genug, also will man es nicht noch für SMS Nachrichten verbrennen.
Da ich den Pager also nicht benutze habe ich diesen für Twitter mißbraucht.
Script um die Notificytions an Twitter zu senden (/usr/local/bin/nagiostweet):
#!/bin/bash while read line; do input=$line; done TWITTERUSER=${1}
curl --basic --user TwitterAccount:TwitterPassword --data status="d ${TWITTERUSER} $input" http://twitter.com/statuses/update.xml > /dev/null
Dieses Script liegt in meinem Fall unter /usr/local/bin/nagiostweet. Anschliessend wird es in Nagios bei den Commands zugefügt:
... define command{
command_name host-notify-by-twitter
command_line /bin/echo "Host '$HOSTALIAS$' is $HOSTSTATE$ Info: $HOSTOUTPUT$ Time: $LONGDATETIME$" | /usr/local/bin/nagiostweet $CONTACTPAGER$
} define command{
command_name notify-by-twitter
command_line /bin/echo "Service: $SERVICEDESC$ Host: $HOSTNAME$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Info: $SERVICEOUTPUT$ Date: $LONGDATETIME$" | /usr/local/bin/nagiostweet $CONTACTPAGER$
}
...
Damit hat man anschliessend zwei neue Commands für die Host und Service notify in Nagios. Diese muss man jetzt nur noch eintragen.
define contact{
contact_name foo
alias Foo Bar
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-twitter,notify-by-email
host_notification_commands host-notify-by-twitter,host-notify-by-email
email foo@bar.com
pager Twitteraccount
}
Der Konfigparameter pager wird jetzt benutzt für Direkt Nachrichten an Twitteraccounts. Wer die Nachrichten nicht per Directmessage verschicken will, so das auch noch weitere Personen den Tweets folgen können, kann man im Script: nagiostweet das: d ${TWITTERUSER} entfernen. Den Tweet kann man ja auch nicht öffentlich machen, so kann nicht jeder lesen, nur die, die wirklich folgen dürfen.
Für den Fall jemand benutzt die Pagerfunktion von Nagios:
Einfach das Script und die Commands etwas anpassen. Man übergibt dem Script die E-Mailadresse und schreibt einfach ein einfaches Textfile mit
foo1@bar.com:Twitteraccount1
foo2@bar.com:Twitteraccount2
als Inhalt. Man sucht nach der E-Mailadresse, mit cut oder awk den Twitteraccount rausfischen und dann so per Directmessages an die User senden.

