Navigatie overslaan.
Start

Nagios notificaties via SMS

Monitoring is natuurlijk 1, en bij een 1 komt er altijd een 2. De twee is: notificaties.

Je kan monitoren zo veel je wil, maar dat is natuurlijk zinloos als je niet op de hoogte gebracht wordt van een eventueel probleem.

Vaak worden probleemnotificaties via email verstuurd, maar ik ben vaker bezig met mijn email niet na te kijken, dan wel.
Aangezien de meeste mensen meestal wel hun GSM in de buurt hebben, is een notificatie via een tekstberichtje altijd handig.

Natuurlijk wil je niet voor ieder akkefietje een SMS, enkel voor kritische dingen, of als er X aantal tijd niet gereageerd is op een email notificatie.
Al deze dingen worden standaard ondersteund door Nagios: een vrij, gratis en zeer compleet monitoring pakket. (http://www.nagios.org/)

Commands

Software om een SM te versturen is bijvoorbeeld smsclient. (http://www.smsclient.org/)
Nadat je dit geconfigureerd hebt met het juiste SMC nummer kan je zeer eenvoudig berichtjes sturen:


sms_client 0499123456 "Dit is een testbericht."

Om dit te integreren met Nagios, maak je eenvoudigweg een nieuw commando aan:


# 'notify-by-SMS' command definition
define command{
        command_name    notify-by-sms
        command_line    /usr/bin/sms_client -q $CONTACTPAGER$ '$NOTIFICATIONTYPE$: \
                        $HOSTNAME$: $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)'
        }

Je kan natuurlijk ook een "host-notify-by-sms" commando aanmaken op gelijkaardige wijze.

De volledige lijst van macros die je kan gebruiken vind je hier: http://nagios.sourceforge.net/docs/3_0/macrolist.html

Contacts

Iedereen die via een SMS op de hoogte gebracht moet worden krijgt een "smscontact":


define contact{
        contact_name                    johan_sms
        alias                           Johan, Network Engineer
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-by-sms
        host_notification_commands      host-notify-by-sms
        email                           johan@knudde.be
        pager                           0499123456
        }

Contacten moet je natuurlijk in een groep zetten, maar dit valt buiten het bestek van deze tekst. Ga er vanuit dat er een "networkadmins" groep bestaat, met de "normale" contacten, en een "networkadmins-sms", met de sms contacten.

Als je wil werken met mensen die "on-call" zijn, kijk dan ook even hier:
http://nagios.sourceforge.net/docs/3_0/oncallrotation.html

Notificaties kritische servers


define service{

        use                             TEMPLATE
        host_name                       Onbelangrijk
        service_description             PING
        check_command                   check_ping!150.0,20%!250.0,60%
        contact_groups                  networkadmins
        }


define service{

        use                             TEMPLATE
        host_name                       Belangrijk
        service_description             PING
        check_command                   check_ping!50.0,20%!100.0,40%
        contact_groups                  networkadmins, networkadmins-sms
        }

Op deze manier zal er voor onbelangrijke services/hosts enkel een mail verstuurd worden, en voor de belangrijke een mail en een tekstbericht.
Het spreekt voor zich dat problemen met de mailinfrastructuur altijd via een SMS gemeld worden...

Natuurlijk is dit niet helemaal koek en ei.
Wat als er een voor onbelangrijk device geen notificaties via tekstberichten verstuurd worden, maar er bijvoorbeeld ook geen mails nagekeken worden? (Weekend, vakantie, ...)
Dingen die in het begin onbelangrijk zijn, kunnen nog steeds belangrijk worden na verloop van tijd.

Er zijn dan twee mogelijkheden: Notifications_options en/of Escalations.

Notifications_options

Je kan de "notifications_options" aanpassen om niet gealarmeerd te worden via een tekstbericht voor "Warnings" of "Unknown" states.

Dit is vooral handig voor schijfruimte checks.
Meestal is te weinig schrijfruimte niet heel erg belangrijk in het begin, dus wil je geen tekstbericht, maar als het kritisch wordt wel.

Met "notifications_options" options kan je dus het notificatietype bepalen aan de hand van de status.

Escalations

Escalations zijn handig, en managers zijn er dol op.

In tegenstelling tot "notifications_options", is hier niet de actuele status bepalend, maar de tijd.

Escalations werken als volgt:

Naast de bestaande notificaties, maak je nog een aantal extra notificaties, daarbij staat niet enkel de contactgroep(en) maar ook wanneer deze gecontacteerd moeten worden.

Stel dat normaal gezien enkel "networkadmins" wordt gecontacteerd, het notificatieinterval is 60 minuten.


define serviceescalation{
	host_name		windoze
	service_description	http
	first_notification	3
	last_notification	5
	notification_interval	60
	contact_groups		networkadmins, networkadmins-sms
	}

define serviceescalation{
	host_name		windoze
	service_description     http
	first_notification	6
	last_notification	10
	notification_interval	60
	contact_groups		networkadmins, networkadmins-sms, managers
	}

Het bovenstaande zorgt ervoor dat:

Bij de 3de tot en met de 5de notificatie, (op uur 3, uur 4, en uur 5) "networkadmins" en "networkadmins-sms" gecontacteerd wordt.
Bij de 6de tot en met de 10de notificatie, ook de "managers" groep.

Zo kan je meerdere personen betrekken indien er niet op een probleem gereageerd wordt om de een of andere reden.

Extra tip

Omdat ik uit mijn praktijk ervaring weet dat dit 2 erg veel voorkomende fouten zijn:

Zorg ervoor dat je modem ook ingepluged is in de UPS, anders krijg je bij een stroomstoring geen notificaties.

Gebruik liefst een externe telefoonlijn, zonder gebruik te maken van een telefooncentrale. Dit heeft ook de maken met stroomstoringen, maar ook is ieder tussenliggend apparaat een potentieel point-of-failure.

Monitoring van monitoring mogelijkheden is uiteraard ook geen slecht idee...

Voor meer leuke truukjes met Nagios, zie: http://www.knudde.be/index.php?page_name=monitoring