It Devel Enviando alerta do Zabbix via Gtalk
Post
Cancel

Enviando alerta do Zabbix via Gtalk

Este post tem o objetivo de demonstrar como criar um script para que o Zabbix possa enviar os alertas via Gtalk.

Instalação dos pre-requisitos

[sourcecode language="shell"]apt-get install python python-xmpp python-dnspython[/sourcecode]

Criação do script
Verificar o local de armazenamento dos script no arquivo de configuração do zabbix, o parâmetro a ser verificado é AlertScriptsPath. No meu caso está em /usr/lib/zabbix/alertscripts

Crie o arquivo, nomeado gtalk.py, com o conteúdo abaixo no local indicado. No meu caso em /usr/lib/zabbix/alertscripts/gtalk.py

[sourcecode language="python" wraplines="false"]#!/usr/bin/python -W ignore::DeprecationWarning
import sys, os, xmpp, getopt, syslog

def main(argv):
login="your_email@gmail.com"
pwd="xxxxxx"
_debug = 0

if len(sys.argv) < 3:
usage()
sys.exit(2)

#log dos parametros recebidos
#log(' '.join(sys.argv[1:]))

rcptto=None
subject=None
msg=None

rcptto=sys.argv[1]
subject=sys.argv[2]
msg=sys.argv[3]

if subject != None and msg == None:
msg = subject;
subject = None;

if rcptto == None or msg == None:
usage()
sys.exit(2)

log(msg)

print "Starting process..."

def presenceHandler(conn, presence):
if presence:
if presence.getType() == "subscribe":
cl.PresenceManager.ApproveSubscriptionRequest(pres.From)

login=xmpp.protocol.JID(login)

if _debug == 1:
cl=xmpp.Client(login.getDomain())
else:
cl=xmpp.Client(login.getDomain(),debug=[])

print "Connecting..."
if cl.connect( server=('google.com',5222) ) == "":
print "not connected"
sys.exit(0)

print "Authentication..."
if cl.auth(login.getNode(),pwd) == None:
print "authentication failed"
sys.exit(0)

# habilita que este cliente aceite automaticamente requisicao de contato
#cl.RegisterHandler('presence',presenceHandler)
#cl.sendInitPresence()

print "Add user "+rcptto
pres = xmpp.Presence(to=rcptto, typ='subscribe')
cl.send(pres)

print "Sending message to "+rcptto
cl.send(xmpp.protocol.Message(rcptto,msg,"chat"))
cl.disconnect()

print "Message Sent!"

def usage():
print "Usage: {-d} [to] [subject] [body]"
print ""
print "Options:"
print " [to] destination of messages"
print " [subject] subect of message"
print " [body] destination of messages"

def log(text):
syslog.syslog(syslog.LOG_ERR, text)

if __name__ == "__main__":
main(sys.argv[1:])
[/sourcecode]

Altere as linhas abaixo (no script) para o e-mail e senha que serão a origem do Gtalk

[sourcecode language="python"]login="your_email@gmail.com"
pwd="xxxxxx"
[/sourcecode]

Defina as permições para este arquivo

[sourcecode language="shell"]chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts/
chmod +x /usr/lib/zabbix/alertscripts/gtalk.py[/sourcecode]

Realize um teste de execução do script com o comando abaixo, apenas alterando seu e-mail.

[sourcecode language="shell"]sudo -u zabbix /usr/lib/zabbix/alertscripts/gtalk.py seu_email@gmail.com "Teste 001" "Mensagem de teste Gtalk"[/sourcecode]

Configurando o Zabbix para enviar os alertas através deste script

Vá em Administration > Media Types

001

Clique em Create Media e preencha os campos conforme demonstrado abaixo e clique em Save

002

Vá em Administration > Users, selecione o usuário que deseja receber o alerta através do Gtalk, clique em Media e depois em Add

003

Preencha as informações, alterando o Type para Gtalk e o Send to para o e-mail do gmail que receberá via Gtalk e clique em Add.

004

Pronto, seu usuário será alertado via gtalk.