Google+

miércoles, 6 de noviembre de 2013

Notificación por Whatsapp en Nagios


Como en el titulo del blog indica. Una forma más de poder notificar alertas en nuestro Nagios. Aviso que este procedimiento puede dejar de funcionar en cualquier momento, ya que dependemos de un servicio externo.


Como requisitos en la parte servidor necesitamos Python 2.6 como mínimo y el modulo dateutil. También necesitamos un teléfono que no haga uso de whatsapp para poder recibir el código de registro.

Empezamos descargando "Whatsapp Messenger" por llamarlo de alguna manera
desde la siguiente web: https://github.com/tgalal/yowsup Esto nos servirá para poder enviar los mensajes de notificación.

Empezamos desde la consola
# cd /usr/local/nagios
# wget --no-check-certificate https://github.com/tgalal/yowsup/archive/master.zip
# unzip master.zip
# cd yowsup-master
Empezamos a editar el archivo de configuración, es simple, por ahora solo es necesario el cc y el teléfono.
# vi config
Y pegamos lo siguiente:
cc= 34 #Código de país
phone=34600000000 # Número de teléfono con el código de país
id=
password=
Ahora registramos el móvil.
# python yowsup-cli -r voice -c config
Os llamará una máquina que será la que os provenga del código, la llamada es en inglés

Ya tenemos los código, ahora vamos a registrarlo:
# python yowsup-cli -R 658789 -c config.example
Detected cc: 34
status: ok
kind: paid
pw: rjgFryc3d34Bfi5IBXe
price: 0,89 €
price_expiration: 1386405621
currency: EUR
cost: 0.89
expiration: 4444444444.0
login: 34600000000
type: existing
Y ahora pegamos el ID de la llamada y la password que hemos obtenido del anterior comando en el archivo config, quedando de la siguiente manera:
# cat config
cc= 34
phone=34600000000
id=658789
password=rjgFryc3d34Bfi5IBXe
Ahora es cuando procedemos ha hacer una prueba a otro móvil:
python yowsup-cli -c config  -s 34600000001 "Esto es una prueba"
Ya tenemos confirmado que todo funciona. Ahora vamos a la parte de Nagios
Editamos el archivo commands.cfg
# vi commands.cfg
Y pegamos lo siguiente:
# 'host-notify-by-whatsapp' command definition
define command{
        command_name    host-notify-by-whatsapp
        command_line        python /usr/local/nagios/yowsup-master/src/yowsup-cli -c /usr/local/nagios/yowsup-master/src/config -s $CONTACTADDRESS1$ "Host '$HOSTALIAS$' is $HOSTSTATE$ - Info: $HOSTOUTPUT$"
    }
# 'notify-by-whatsapp' command definition
define command{
        command_name    notify-by-whatsapp
        command_line       python /usr/local/nagios/yowsup-master/src/yowsup-cli -c /usr/local/nagios/yowsup-master/src/config -s $CONTACTADDRESS1$ "$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$"   
}

Y en el archivo contacts.cfg añadimos lo siguiente a un usuario:
address1                           34600000001
service_notification_commands   notify-by-whatsapp
Con esto valdría. Ahora reiniciamos el nagios y esperamos a que se caiga algun servicio. El resultado final sería este: