Envío de SMS mediante Nagios

13 10 2008

Envio de sms con Nagios

Existen numerosos métodos de notificación que Nagios puede usar para cantar cuando alguno de nuestros servicios o equipos tiene problemas.

El más usado es el del correo electrónico, aunque gracias a la estructura en sí de Nagios, es posible implementar cualquier cosa ejecutando algún script.

Este es el caso que me ha ocupado a mí. Necesitaba que me notificase por sms, ya que todavía no tengo “hayfon”, ni lo voy a tener en mucho tiempo XD. Tampoco pienso tragar por las conexiones robadineros de bromafone o bomistar (de los OMV’s ni hablo, que es un mundo aparte).

Visto el panorama, me he decidido por usar el servicio que ofrecen algunos clones de Betamax, cual es la posibilidad de enviar sms a precios tirados, y mediante una única sentencia en el navegador. Realmente, no es necesario tener el navegador para hacerlo, ya que se puede lanzar desde cualquier script. Más información al respecto aqui.

Para el uso e instalación de Nagios, existe bastante documentación por la red. Por ejemplo, aqui, aqui y aqui.

Una vez instalado y configurado, se supone que una configuración básica para monitorizar un router, como la descrita en la web de nagios, nos debería notificar por email la caída de nuestro equipo o servicio. Verdaderamente es sencillo de hacer, siempre y cuando sepamos lo que tenemos entre manos y, además, hayamos configurado correctamente el envío de correos desde nuestra máquina (sendmail, postfix, exim, etc).

Total, que me encontraba por aquí y quería también que me llegase la información al móvil para cuando estoy por ahí de fiesta y me pueda amargar un rato, con algún servicio crítico caído y esas cosas. Ya sabéis la máxima de un técnico, siempre operativo por si las moscas….

Primero indicamos en /usr/local/nagios/etc/objects/commands.cfg que existe un comando nuevo para ejecutar cosas. En este caso el comando ejecuta una orden que manda sms. Nos vamos al final del fichero y ponemos

define command{
        command_name    host-notify-by-sms
        command_line    /usr/bin/wget --no-check-certificate "https://myaccount.voicetrading.com/clx/sendsms.php?username=usuario_betamax&password=password_betamax&from=+tu_numero_origen&to=+tu_movil_destion&text='$NOTIFICATIONTYPE$: $HOSTNAME$ is $HOSTSTATE$ ($OUTPUT$)' " -O /tmp/SMS.resultado.xml
        }

Ahora Nagios sabe que tiene que ejecutar cuando llegue el momento.

Como probablemente estemos puestos como nagiosadmin, estaremos haciendo uso de generic-contact para notificaciones. Todo esto lo podemos comprobar en /usr/local/nagios/etc/objects/contacts.cfg. Una vez que sabemos quién somos y cómo se nos notifica (suponemos que estamos en generic-contact), editamos /usr/local/nagios/etc/objects/templates.cfg y veremos algo como

define contact{
        name                            generic-contact
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options       d,u,r,f,s
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        register                        0
	}

y añadiremos a host_notification_commands todos aquellos comandos que queremos se ejecuten cuando hay problemas. En este caso, se llama host-notify-by-sms. El resultado es

define contact{
        name                            generic-contact
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options       d,u,r,f,s
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email,host-notify-by-sms
        register                        0
	}

Con esto ya tenemos el sistema listo para enviar sms cuando el host en cuestión se nos caiga o tenga problemas.

Gracias a Iñaki Baz por su aporte en el comando notificador…