04 diciembre 2007

Envío de alarmas a SMS con zabbix

Para ello no utilizo el sistema de SMS de zabbix, porque no tengo ningún modem GSM conectado físicamente a los servidores.

Utilizo un servicio de la empresa Clickatell, proporciona un buen servicio, no tengo queja hasta la fecha, es barato y tiene cobertura internacional.

En zabbix lo primero que hago es configurar un trigger. Lo que hago es monitorizar el puerto 81 de un equipo para probar. Ahí tengo configurado un servidor de nginx, y lo activo y desactivo para comprobar que funciona el trigger.

Lo siguiente que hago es configurar un media type para un usuario.
También añado una acción para enviar por correo en el caso de que el trigger se active.

El media type que he creado es un script en python, que lo que hace es enviarme un sms en el caso de que se le llame con el parámetro del trigger ON.

Si se le pasa cualquier otra cosa como parámetro no me enviará mensaje.

enviarsms.py
#!/usr/bin/env python

'''Script para enviar mensajes al gateway sms'''
import sys
import os
import smtplib

import ssmtplib

# definimos una funcion en la que recogemos varios parametros, luego formateamos el mensaje y lo enviamos

def enviosmsservicio(alarma,host,estado):
servidor="tu servidor smtp"
puerto=465
fromadr="cuenta desde la que enviamos"
cont="clave para autenticar"
msg = ("From: cuenta desde la que enviamos\r\nTo: cuenta de correo de clickatell\r\n\r\n")
numeros={"uno":"34000000000"}
click=("usuarioclick","clave","clave_api")


if sys.argv[3]=="ON":
texto="user:"+click[0]+"\r\npassword:"+click[1]+"\r\napi_id:"+click[2]+\
"\r\nto:"+numeros["uno"]+"\r\ntext:Alarma"\
"\r\ntext:"+sys.argv[1]+" "+sys.argv[2]+" "+sys.argv[3]
msg=msg+texto
server=ssmtplib.SMTP_SSL(servidor,puerto)
server.set_debuglevel(0)
server.login(fromadr,cont)
server.sendmail(fromadr, "cuenta de correo de clickatell",msg)
server.close()

return msg

enviosmsservicio(sys.argv[1],sys.argv[2],sys.argv[3])


Lo primero que tenemos que hacer es importar los módulos necesarios, aquí sólo hay uno que no es habitual y es ssmtplib. Lo podemos descargar de aquí además de ver cómo funciona.

Utilizo este módulo porque envío los mensajes hacia clickatell a través de nuestro servidor de correo y sólo podemos enviar mensajes con SSL y autenticación; de ahí las siguientes líneas para autenticar el correo.

Si no utilizáramos autenticación ni SSL reduciríamos líneas del script.

numeros es un diccionario donde incluimos el número al que hay que enviar el SMS. Lo hice así en previsión de futuras modificaciones.

click es una tupla que contiene el nombre de usuario, la clave api y la contraseña del servicio de mensajes de clickatell.

La comprobación del script es sencilla, ejecutando por ejemplo sendsms.py host algo ON nos enviaría el mensaje.

De este modo al añadirlo al zabbix nos enviaría los tres parámetros que envía el zabbix.

No es demasiado complicado. Si alguien tiene alguna duda que haga un comentario que el blog está muy sólo :-)

8 comentarios:

Anónimo dijo...

Esta empresa es fiable ?

josé dijo...

Yo hasta el momento no he tenido problema. En su página dicen que Oracle les utiliza a ellos como proveedor.

Yo he comprado más de 200 mensajes y ahora no me acuerdo si eran sólo 11 euros, ó 11 dólares, pero utilicé algunos para probar e iba perfecto

Anónimo dijo...

hOLA:

UN FAVOR INMENSO: he creado mi cuenta en CLICKATELL, la cual ya la confirme y supuestmente tengo 10 creditos pra probar la efectividad del servicio... pero desde donde escribo los mensajes? desde la web de clickatell o desde mi celular?... por ninguno de los dos formas he podido acceder a la forma de como enviar los mensajes. A ver si alguien me ayuda.. GRACIAS

josé dijo...

No recuerdo bien el proceso de alta, pero creo que si tienes un usuario y contraseña puedes hacer login en la web, de modo que puedes utilizar sus apis para enviar mensajes como te explican ellos. No puedes enviar mensajes desde tu móvil, pero sí que los puedes recibir en pruebas.

Ruben O dijo...

Hola

¿qué tipo de cuenta necesitamos en Clickatell? Porque hay varias y no es claro a simple vista.

Saludos

josé dijo...

Yo utilicé el SMS gateway, así que lo que te permita utilizar eso

Wocel dijo...

Yo utilizo LabsMobile que tambien envian mensajes a España y tienen mejores tarifas. De momento no he tenido nigún problema.

Pos si os interesa www. labsmobile.com

PowerMTA - Mariana Mercado dijo...

Excelente tutorial.
andaba en busca de un codigo como este para hacer funcionar el sistema.

saludos.