Zabbix + SMS = GoogleCL (Google Command Line)

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.

[ Hits: 32.386 ]

Por: Eduardo Rebelo Lopes em 31/12/2012


Introdução



Tendo como partida um servidor Zabbix corretamente instalado e configurado, vamos partir para um próximo nível, começando por instalar corretamente o GoogleCL (API do Google) que nos permite utilizar vários serviços do Google via linha de comando, assim, poderemos desenvolver scripts mirabolantes para diversas aplicações.

Passarei aqui uma ideia bastante simples onde utilizarei essa API para o envio de SMS pelo Google.

O serviço utilizado no Google para envio de mensagens é o Google Agenda (Calendar), no qual nos permite criar eventos e lembretes; estes lembretes podem ser desde um pop-up em seu computador e até mesmo uma mensagem em seu celular.

* O Google não cobra por este serviço.

Uma rápida busca é possível encontrar como melhor configurar a agenda do Google para o envio de SMS, sendo assim, vamos pular esta parte e vamos nos ater em como nosso servidor Zabbix vai utilizar esta API tão bacana.

Instalando o GoogleCL

Vou demostrar a instalação a partir do Debian 6.0 Squeeze, onde está instalado meu servidor Zabbix.

Fazendo a busca através de comandos de busca de pacotes, encontramos a ultima versão do GoogleCL, conforme exemplo abaixo:

apt-cache search googlecl
googlecl - command-line tool for access to (some) Google services

Mas, quando eu utilizei essa versão (googlecl_0.9.13-1_all.deb - versão do momento deste tutorial), encontrei diversos problemas, e em busca de soluções, encontrei vários fóruns que a melhor solução seria instalar a versão um pouco mais antiga, porém, mais estável.

Optei então, por instalar a versão: googlecl 0.9.10-1 command-line tool for access to (some) Google services

Disponível para download neste link:
Para adquirir o pacote, utilizamos o comando:

wget http://googlecl.googlecode.com/files/googlecl_0.9.13-1_all.deb

Uma vez adquirido, podemos instalar:

# dpkg -i googlecl_0.9.13-1_all.deb

Faltaram as dependências, que resolvemos com um:

# aptitude install

Pronto, a API do Google já está instalada.

Agora devemos apenas configurar uma conta do Google, que iremos utilizar a agenda.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração
Outros artigos deste autor

Processamento Paralelo em Shell Script - Conversão de Arquivos WAV para MP3

Leitura recomendada

Ubuntu Minimal para Usuários Comuns

Programas equivalentes Linux vs Windows

Octave - Programação científica no Linux

Criando um pacote DEB manualmente

Mono e C# (parte 2)

  
Comentários
[1] Comentário enviado por astdarkness em 31/12/2012 - 16:53h

Parabéns pelo artigo!!! Vou usar após as festas. :D

[2] Comentário enviado por edul0pes em 02/01/2013 - 10:14h


[1] Comentário enviado por astdarkness em 31/12/2012 - 16:53h:

Parabéns pelo artigo!!! Vou usar após as festas. :D


Obrigado! Bora aproveitar.

[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.

[4] Comentário enviado por edul0pes em 02/01/2013 - 13:54h

stringuetta,

Quando configuramos uma conta do googlecl, ele automaticamente cria um arquivo com as configurações em:

$HOME/.config/googlecl

Você irá encontrar algo similar a:

[CALENDAR]
list_fields = title,when
user = <e-mail configurado>
fields = title,when

Você poderá remover somente o endereço de e-mail e pronto.

Basta executar um simples comando para adicionar algum evento na agenda e será solicitado o novo usuário.

root@root~$ google calendar add "teste"
Please specify user:

Acredito que isso resolva! :)
Abs,


[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.

A propósito, muito bom o artigo.

[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:

https://www.zabbix.com/documentation/1.8/manual/config/macros

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".

Abs,

[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.

[9] Comentário enviado por brennosu em 07/01/2013 - 15:15h

Parabéns pelo o Artigo,

Estou tentando realizar os testes, digito o comando: $ google calendar add "Hello Word" , ele cria na agenda , porém não recebo sms.

Deve ser algum problema no google, será ?


Bom, todavia, parabéns novamente pelo o artigo, vou só esperar receber o sms para implementar no zabbix.

Abraço.

Att,

Brenno Freires.

[10] Comentário enviado por edul0pes em 07/01/2013 - 16:02h

Obrigado brennosu,

Seguinte, para receber a mensagem você deve configurar a agenda do google para enviar SMS para novos eventos.

Da uma olhada nesse link aqui:

http://www.google.com/intl/pt-BR_ALL/mobile/sms/calendar/

É 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.

Abs,

[11] Comentário enviado por brennosu em 07/01/2013 - 17:43h

Vlw Pela Dica Edul0pes,


Criei uma nova conta, nessa nova conta compartilhe agenda dela. Assim funcionou massa. Você poderia se possível passar as sintax do googleapi?

Gostaria de criar outras agendas nessa conta e poder escolher qual agenda eu possa enviar. Outra coisa seria definir outro horário.

Mas de todo jeito, me ajudou muito!!!!


Parabéns mais uma vez.

Att,


Brenno Freires.


[12] Comentário enviado por brennosu em 07/01/2013 - 19:05h

Outra coisa Edul,


Teria como me falar qual a versão que você está usando o zabbix ?

Estou tendo dificuldades em criar ação no zabbix 2.0.4 , a tela não é a mesma.


Abraço.

Att,

Brenno Freires

[13] Comentário enviado por edul0pes em 08/01/2013 - 08:14h

Fala Brenno,

Seguinte, em relação a sintaxe do googlecl com exemplos e tal, você poderá encontrar diversos recursos nesse link:

http://code.google.com/p/googlecl/

Estou utilizando a versão: Zabbix 1.8.9

Não trabalhei com a versão mais nova do Zabbix, mais acredito que seja o mesmo principio.

Abs,

[14] Comentário enviado por brennosu em 08/01/2013 - 16:44h

Fala Edul,

Cara, no 2.0 é bem diferente, até agora não consegui mas a noite irei testar novamente.


Assim que consegui eu venho aqui informar o que eu fiz para funcionar no 2.0.

Abraço.


Att,

Brenno Freires

[15] Comentário enviado por stringuetta em 08/01/2013 - 17:30h

Aqui na versão 2.0.2 também não consegui, estou enviando os alertas somente por email. Caso consigo Brenno, compartilha com a gente ;-)

[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?!

abraço

[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!!!


Qualquer coisa, entra em contato que te explico.

Valeu Edul pela iniciativa, me ajudou muito!!!

Abraço.

Att,

Brenno Freires.




[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.

Att,
Abs,
Eduardo Lopes

[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?!

Abraços!

[20] Comentário enviado por edul0pes em 05/04/2013 - 11:35h

Bom dia markintux,

Você configurou sua agenda para notificar via SMS? Por default é desabilitado.

Vá em configurações da sua agenda -> agendas -> Lembretes e notificações -> na opção 'Novos eventos:' -> habilite o SMS.

O Zabbix estão criando os eventos?
Os eventos estão aparecendo em sua agenda?

Qualquer novidade avisa ai.

Abraço,
Eduardo Lopes

[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:

zabbix:x:1001:1001:,,,:/home/zabbix:/bin/bash
root:x:0:0:root:/root:/bin/bash

Desde já agradeço pessoal.

[22] Comentário enviado por edul0pes em 09/07/2013 - 15:36h

Obrigado marcioanj.

Seguinte, seu servidor está conectado a internet?
Pois o erro que está ocorrendo é de conexão:

''socket.error: [Errno 101] Network is unreachable''

Ele tenta abrir uma conexão com o servidor do google, porém, não está conseguindo.

Espero ter ajudado.
Abs,

[23] Comentário enviado por leandrops em 30/07/2013 - 22:47h

Estou com o seguinte erro... alguém pode me ajudar....

[root@zabbix ~]# google calendar add "Hello Word"
Please log in and/or grant access via your browser at:
https://www.google.com/accounts/OAuthAuthorizeToken?o.......................

Then, in this terminal, hit enter.
Token upgrade failed! Could not get OAuth access token.
Failed to get valid access token!

[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:

http://code.google.com/p/googlecl/

Valeu.

Abs,



[25] Comentário enviado por kadman em 12/09/2013 - 15:02h

Parabéns pelo tutorial,

Só complementando para aqueles que estão tendo problemas no envio do SMS.

Tem este tutorial aqui que vai ajudar bastantes:

http://tutoriais.directcall.com.br/alertas-do-zabbix-por-sms-utilizando-api-directcall

Super simples de receber alertas de SMS e Torpedo de VOZ (Caso linha fixa)

Valeu!
Renato

[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.

Alguém tem ideia do que pode ser?

Abraços

[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,

[28] Comentário enviado por sneeps.ninja em 13/04/2015 - 10:29h


O meu zabbix parou do nada de enviar o SMS, testei na mão p/ ver o erro deu essa msg :

Failed to get entries: {'status': 403, 'body': '<HTML>\n<HEAD>\n<TITLE>Forbidden</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Forbidden</H1>\n<H2>Error 403</H2>\n</BODY>\n</HTML>\n', 'reason': 'Forbidden'}
No calendar matches "zabbix"


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts