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 kommentarer

  1. Tackar! Det var en bra guide! Precis vad jag behövde :)

    Undrar lite över $CONTACTPAGER$ som du använder i command_line för notify-{host|service}-by-sms. Definierar du det också i contacts.cfg?

  2. Vad jag förstått är den ”inbyggd” i nagios och således inte definierad nånstans..

  3. Jag hittade att det är ett macro, som man kan sätta ett värde på genom att definiera värdet ‘pager’ till mobilnumret hos den kontakt/kontaktgrupp man vill ska ha meddelanden :)

  4. Alltså:

    define contact {
          contact_name       test
          use                generic-contact
          alias              Testuser
          pager              0701234123
    }
    

    i contacts.cfg.

  5. Just ja, så var det, kör precis på samma sätt själv. Var nåt år sen jag konfade den där biten :)

  6. Gött! Då vet jag :) Tackar för guiden!!

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

*

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>