Skicka SMS från Nagios

Nagios är en Open Source programsvit för serverövervakning. Fungerar väldigt bra och kan bevaka det flesta tjänster på servrar samt kolla att switchar och annan utrustning uppför sig som den ska via SNMP.

Man får som standard rapport via e-post. Här nedan förklarar jag hur man kan få rapporterna via SMS med hjälp av en SMS-gateway tjänst. Man kan ju också hänga en mobiltelefon i serverhallen som man kopplar till en dator men det kommer jag inte atet gå in på här.

SMS-leverantören jag använder är 42it.se och har hittills fungerat väldigt bra. Fördröjningen är ca 10-15 sekunder från att notisen skickas från datorn tills att den kommer fram i telefonen. Helt OK!

Kolla först att du har php5-cli installerat på servern du kör detta på, annars fungerar det inte…

Börja med att göra ett script för att skicka SMS med leverantörens HTTP-tjänst, spara som /usr/local/bin/sendsms:

#!/bin/bash

USERNAME=username
PASSWORD=123123123
SENDSMSADDRESS="http://server4.msgtoolbox.com/api/current/send/message.php"
MAXMSGLENGTH=320

read -n $MAXMSGLENGTH -r MSG

MSG=`/usr/bin/php -r "echo urlencode( \"$MSG\" );"`

/usr/bin/wget -q -O - "$SENDSMSADDRESS?username=$USERNAME&password=$PASSWORD&to=$1&from=123456789&message=$MSG&route=G1" &> /dev/null

Här ställer du in användarnamn och lösenord samt vilket nummer SMS’et skall se ut att komma ifrån. Där kan man ju välja nåt påhittat som man har programerat in i sin telefonbok för att tydligt se vad SMS’et gäller. Skapa tex. en kontakt i telefonen med nummer 123456789 som heter ”Serverrapport”.

Glöm inte att göra scriptet körbart med chmod +x

Nästa steg är att definiera kommandon i nagios för sms-notisen, i commands.cfg:

# 'notify-host-by-sms' command definitiondefine command{

command_name    notify-host-by-sms

command_line    /usr/bin/printf "%b" "*Serverinfo* Host: '$HOSTALIAS$' is $HOSTSTATE$: $OUTPUT$" | /usr/local/bin/sendsms $CONTACTPAGER$

}# 'notify-service-by-sms' command definition

define command{

command_name    notify-service-by-sms

command_line    /usr/bin/printf "%b" "*Serverinfo* Type: $NOTIFICATIONTYPE$: $SERVICEDESC$ @$HOSTNAME$: $SERVICESTATE$" | /usr/local/bin/sendsms $CONTACTPAGER$

}

Ett kommando för host-notification och ett för service-notification.

Sen behöver man bara specifiera dessa kommandon i confen för den kontakt som skall få SMS-rapporter.

I contacts.cfg, i den aktuella kontakten:

service_notification_commands   notify-service-by-email,notify-service-by-sms
host_notification_commands      notify-host-by-email,notify-host-by-sms

Nu skall det bara vara att köra och SMS skall förhoppningsvis skickas som komplement till de mail som går iväg.

Lämna gärna en kommentar nedan om du finner denna guide användbar.

6 comments to Skicka SMS från Nagios

Leave a Reply