-
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…