===== Wie man SMS mit Nagios verschicken kann ===== ==== SMS-Provider ==== Ich nutze [[http://www.smstrade.de]]. Die haben eine recht einfache http-Schnittstelle. Prinzipiell geht jeder, der eine http-Schnittstelle bietet. ==== Schnittstelle zum Gateway ==== https://gateway.smstrade.de/?key=$GATEWAY_KEY&to=$NUMBER&route=basic&concat=1&cost=1&message_id=1&count=1&message=$SMS_MESSAGE ==== Script ==== Das ganze in ein Script gegossen: #!/bin/bash GATEWAY_KEY= MESSAGE=$1 SMS_MESSAGE=`php -r "echo urlencode('$MESSAGE');"` NUMBER=$2 LOGFILE=/var/log/nagios.sms.log date >> $LOGFILE echo $SMS_MESSAGE >> $LOGFILE wget -q -O - --no-check-certificate "https://gateway.smstrade.de/?key=$GATEWAY_KEY&to=$NUMBER&route=basic&concat=1&cost=1&message_id=1&count=1&message=$SMS_MESSAGE" >> $LOGFILE Das script hat 2 Parameter: - Nachricht - Nummer an die die SMS gehen soll Da die Nachricht url-encodiert werden muss und die Bash das nicht selbst kann, wird hier php dazu bemüht. Da auf dem Nagios-Server eh php für die Weboberfläche von Nagios installiert ist, sollte das kein Problem darstellen. Die Ausgaben, werden in ein Logfile geschrieben: - Datum - url-encodierte Nachricht - Status-Code von SMS-Trade siehe [[http://www.smstrade.de/pdf/SMS-Gateway_HTTP_API_v2_de.pdf]] - Message-ID - Kosten - Anzahl der versendeten Nachrichten ==== Aufruf von Nagios ==== define command{ command_name notify-service-by-sms command_line /usr/local/bin/send_nagios_sms.sh "$NOTIFICATIONTYPE$ for $SERVICEDESC$ at host $HOSTALIAS$/$HOSTADDRESS$: $SERVICESTATE$" $CONTACTPAGER$ } define command{ command_name notify-host-by-sms command_line /usr/local/bin/send_nagios_sms.sh "$NOTIFICATIONTYPE$ for $HOSTNAME$/$HOSTADDRESS$: $HOSTSTATE$" $CONTACTPAGER$ } Aufgrund von "concat=1" beim SMS-Versand kann die Nachricht bis zu 1530 Zeichen lang sein. Es werden entsprechend mehrere SMS versendet. define contact{ contact_name ello-sms alias ello-sms service_notification_period 24x7 host_notification_period 24x7 service_notification_options c,r host_notification_options d,r,u service_notification_commands notify-service-by-sms host_notification_commands notify-host-by-sms pager +49xxxxxx } define contactgroup{ contactgroup_name admins alias Nagios Administrators members ello,ello-sms } Ich hab für den SMS-Versand einen extra Kontakt definiert, dann ist man flexibeler. Man kann auch mehrere Kontakte definieren, die auch für unterschiedliche Dinge Nachrichten bekommen sollen.