Para tornar seu monitoramento com o Zabbix mais efetivo, vamos utilizar o envio de SMS (Short Message Service) pela API do Google, tornando nosso monitoramento mais poderoso.
A primeira vez que vamos utilizar a API, e somente na primeira, devemos configurar a conta a ser utilizada.
* Lembrando que a nossa agenda deve existir.
Logo, tomando como partida que ela exista, devemos tentar adicionar um evento em nossa agenda com o seguinte comando:
google calendar add "Hello Word"
Assim, será solicitado que seja inserido a conta que será utilizada, e caso a página web não seja aberta, você deverá copiar o link, colar em seu Web Browser.
A mensagem abaixo será exibida.
Um serviço de terceiros está solicitando permissão para acessar Conta do Google.
Para permitir que um serviço de terceiros acesse a sua conta, faça login.
Uma vez permitido, você não terá mais que realizar este procedimento e caso seja necessário revogar esse acesso, é necessário apenas ir nas configurações do seu e-mail.
Voltamos, então, ao shell do servidor Zabbix.
Pronto, está configurado a conta do Google. Verificamos na agenda se o evento foi criado, logo, deve-se configurar para que novos eventos sejam enviados via notificação por SMS.
Obs.: Quando temos diversos destinatários para esses SMS, devemos então compartilhar a agenda com esses e os mesmos, deverão também configurá-la (agenda) para que novos eventos disparem as notificações via SMS.
Configurando o Zabbix Server
Agora podemos manipular este comando de diversas maneiras, por exemplo, como um comando remoto no servidor, facilmente implantado no servidor Zabbix. Porém, vou utilizar um script bem simples que pode ser incrementado:
#!/bin/bash
# Script para utilizar o google agenda para mandar sms
# Criado por Eduardo Lopes - 19/12/2012
# recebe como argumento o nome do HOST+Trigger+Status
google calendar add "$1"
Adicionamos esse script em /etc/zabbix/scripts, não podemos esquecer de alterar nos arquivos de configuração do servidor zabbix em /etc/zabbix/zabbix_server.conf e zabbix_agentd.conf, habilitando external scripts e comandos remotos.
Agora, em nosso servidor Zabbix, podemos criar ações e adicionar em "Operações da Ação" um comando remoto como a seguinte sintaxe:
Logo, quando uma Trigger for disparada, será adicionado um evento na agenda do Google, que por sua vez, manda um SMS para o seu celular com a notificação.
[3] Comentário enviado por stringuetta em 02/01/2013 - 13:13h
edul0pes
Você sabe me dizer como eu troco de usuário no googlecl ? Tentei de todas as formas e o calendar continua associado ao email que não quero mais, o qual na verdade até exclui, mesmo removendo o pacote do python e o googlecl não resolveu, como se armazenasse em um cache.
[5] Comentário enviado por stringuetta em 02/01/2013 - 15:42h
edul0pes
Exatamente como disse, resolvido o problema. Uma outra duvida, nos parâmetro de "mensagem padrão" exibido na tela do artigo, você criou manualmente, pois não achei esses parâmetro nas configurações de triggers.
[6] Comentário enviado por edul0pes em 02/01/2013 - 18:01h
Olá stringuetta,
Que bom que tenha dado certo.
Os parâmetros configurados na "mensagem padrão" e "mensagem de recuperação" eu criei através das macros definidas na documentação do Zabbix, disponível no link abaixo:
Essas macros são bastante interessantes quando precisamos saber de diversos detalhes do evento e também quando utilizamos o escalonamento de ações no Zabbix, proporcionando uma maior rapidez na solução de um "problema".
[7] Comentário enviado por leandrojpg em 05/01/2013 - 21:20h
Cara sempre tive interesse em algo assim, mas tenho uma duvida tenho que contratar algum pacote de envio de SMS de alguma operadora,ou só usando o google calendar?
[8] Comentário enviado por edul0pes em 07/01/2013 - 07:58h
Caro leandrojpg,
Não precisa contratar nada, o Google não cobra pelo envio do SMS, algumas operadoras podem cobrar o serviço, é possível verificar com a operadora. Posso afirmar que a TIM não cobra o serviço. Assim, não temos gastos com o monitoramento + SMS, basta criar um login no google e utilizar os serviços.
É bastante simples, eu sugiro, caso seja o seu cenário, você compartilhe a agenda criada com a sua pessoal, assim você pode aumentar o número de destinatários, para cada usuário você compartilha a agenda e o usuário configure para receber por SMS também.
[16] Comentário enviado por modicow em 09/01/2013 - 01:01h
Boa noite.
Estou com problema relacionado a receber o SMS. Consigo inserir um evento de forma manual (google calendar add "teste"), este exibe na agenda mas não recebo a notificação... Percebi que quando insiro um evento de forma manual através do shell na agenda ela fica sem lembrete (Sem lembretes configurados), por mais que eu ja tenha definido o tipo de lembrete como sms,,, existe alguma configuração a mais?!
[17] Comentário enviado por brennosu em 09/01/2013 - 18:55h
Modicow,
Eu passei por esse mesmo problema.
Seguinte:
Você tem que ter duas agendas...
Cria uma conta no gmail para a primeira agenda, EX: agendateste@gmail.com
Nessa conta do gmail vai esta disponível agenda referente a essa conta. Nela você não precisa configurar nenhum tipo de notificação por SMS.
Na segunda agenda, no caso, seria a sua agenda, nela você configura a parte de receber sms conforme já foi dito aqui nesse artigo.
Feito isso basta agora você compartilhar a primeira agenda "agendateste" na sua segunda. Ou seja, você está compartilhando "agendateste" e consegue visualizar ela na sua segunda agenda.
Todo novo evento que for cadastrado na primeira agenda "agendateste" que está compartilhada com a sua segunda agenda (onde está configurado o sms) A google irá disparar o SMS.
Entendeu ? Testa ae e depois me fala se você conseguiu :).
Stringuetta, meu zabbix é o 2.0.4, mais atual, eu conseguir fazer funcionar sim :D , coisa linda de DEUS!!!
[18] Comentário enviado por edul0pes em 18/03/2013 - 15:23h
Boa tarde,
Migrei meu servidor Zabbix para a versão 2.0.5, fiz as configurações e estão funcionando sem problemas, caso alguém ainda esteja com alguma dificuldade, favor entrar em contato.
[19] Comentário enviado por markintux em 04/04/2013 - 15:13h
Alguém me ajuda?!
Consegui criar o evento na mão normalmente, chego até a receber e-mail do mesmo criado. Porém a SMS nunca chega. hahahahaa! Já configurei para receber sms, já cadastrei meu numero e tudo mais, mas ainda não consegui. Tenho a operadora TIM SP e vi que a TIM BRASIL oferece este serviço normalmente. Será que alguém sabe o que pode estar acontecendo?!
[21] Comentário enviado por marcioanj em 04/07/2013 - 17:02h
edul0pes, parabéns pelo artigo. Já usei este artigo para implementar esta solução e funcionou perfeitamente, entretanto, desta vez não estou conseguindo. Já usei várias combinações de versões do googlecl e gdata-python, mas está dando o erro abaixo. Será que alguém já teve este tipo de problema?
O problema ocorre quando tento fazer o teste, já tentei como root e com o usuário zabbix.
$ google calendar add "teste"
Please specify user: xxxxx@gmail.com
Depois de especificar o usuário, no caso o e-mail (xxxxxx@gmail.com), demora uns 2 minutos e apresenta o erro abaixo.
Traceback (most recent call last):
File "/usr/local/bin/google", line 991, in <module>
main()
File "/usr/local/bin/google", line 977, in main
run_once(options, args)
File "/usr/local/bin/google", line 751, in run_once
authenticated = authenticate(auth_manager, options, config, section_header)
File "/usr/local/bin/google", line 172, in authenticate
valid_token = auth_manager.retrieve_access_token(display_name, browser)
File "/usr/local/lib/python2.7/dist-packages/googlecl/authentication.py", line 174, in retrieve_access_token
if self.client.RequestAccess(domain, display_name, None, browser_object):
File "/usr/local/lib/python2.7/dist-packages/googlecl/service.py", line 112, in request_access
extra_parameters=fetch_params)
File "/usr/local/lib/python2.7/dist-packages/gdata/service.py", line 416, in FetchOAuthRequestToken
response = self.http_client.request('GET', str(request_token_url))
File "/usr/local/lib/python2.7/dist-packages/atom/http.py", line 163, in request
connection.endheaders()
File "/usr/lib/python2.7/httplib.py", line 958, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 818, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 780, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1161, in connect
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
socket.error: [Errno 101] Network is unreachable
Obs.: os usuários zabbix e root estão da seguinte forma:
[24] Comentário enviado por edul0pes em 31/07/2013 - 08:57h
leandrops,
Você precisa abrir via navegador o link que aparece, será solicitado que seja inserido uma conta do Google e então a mensagem abaixo será exibida:
Um serviço de terceiros está solicitando permissão para acessar Conta do Google.
Para permitir que um serviço de terceiros acesse a sua conta, faça login.
Assim, você libera acesso via GoogleCL a sua agenda.
Maiores informações sobre possibilidades do GoogleCL acesse:
[26] Comentário enviado por diegoblos em 01/10/2013 - 08:37h
Olá pessoal,
Consegui fazer funcionar o Zabbix 2.0.8 + GoogleCL.
Porém tem apenas uma coisa que ainda não consegui descobrir o que causa e muito menos como solucionar: ao gerar o evento que tem como ação enviar o SMS, ele cria 9 "Eventos" no Google Calendar, consequentemente, o Google envia 9 SMS com o mesmo evento. O problema maior, é que o Google acaba bloqueando por algum tempo novos SMS, envia alguns e o restante não envia mais. Depois, mesmo criando novos eventos na agenda, ele não envia SMS por algum tempo.
Já testei apenas com o script, que funciona 100% (cria apenas um evento na agenda). Acontece apenas quando ocorre um evento no Zabbix mesmo.
[27] Comentário enviado por edul0pes em 01/10/2013 - 08:51h
Bom dia diegoblos,
Seguinte, bem estranho mesmo esse problema, você já deu uma olhada nos log's quando a ação é executada?
Acontece isso só para um tipo de evento ou para todos?
Cola o log aqui que podemos lhe ajudar melhor.
Abs,