Notificações Zabbix pelo Telegram.

Neste artigo vamos abordar uma configuração muito útil, a utilização do monitoramento de mensagens da ferramenta Zabbix através do Telegram. Com esta configuração você será capaz de personalizar suas mensagens e visualiza-las a partir de seu aplicativo de mensagens, otimizando assim o tempo de respostas para incidentes.

CONSIDERAÇÕES

Vamos levar em consideração que você já possua um ambiente com o Zabbix instalado e rodando normalmente. Caso queria aprender como instalar a ferramenta Zabbix no Linux, confira o artigo “Instalando Servidor Zabbix”. Também é necessário que você seja capaz de criar um bot pelo aplicativo Telegram. Caso queira aprender como criar um bot, confira nosso artigo “Configurando Telegram Bot”. Para este artigo estamos utilizando a distribuição Debian 8.8., mas você pode utilizar sua distro de preferência.

1) INSTALANDO PACOTES.

Para realizarmos a integração de nosso bot Telegram com a ferramenta Zabbix é necessário a instalação do pacote “python-pip“. Realize a instalação conforme ilustrado abaixo.

apt-get install python-pip

Agora a partir do python, vamos instalar a API do Telegram.

pip install pyTelegramBotAPI


2) CONFIGURANDO SCRIPT.

Com os pacotes instalados, vamos criar um script que fará interação com nosso Telegram Bot. Para isso, crie um arquivo em “/usr/local/share/zabbix/alertscripts” chamado “telegram.sh, e com seu editor de texto de preferência, adicione o conteúdo conforme ilustrado abaixo.

vi /usr/local/share/zabbix/alertscripts/telegram.sh
#!/usr/bin/env python

import telebot,sys

BOT_TOKEN='121455441:EEASDa4DjfSjnSv7-g_nHaTrbaKdRggf3l4I'
DESTINATION=sys.argv[1]
SUBJECT=sys.argv[2]
MESSAGE=sys.argv[3]

MESSAGE = MESSAGE.replace('/n','\n')
tb = telebot.TeleBot(BOT_TOKEN)
tb.send_message(DESTINATION,SUBJECT + '\n' + MESSAGE)

A variável do “BOT_TOKEN” deve ser substituída pelo token do seu bot criado. Realize a alteração salve e saia da edição do arquivo. De permissão de execução ao arquivo “telegram.sh” e adicione o usuário “zabbix” como dono do arquivo, conforme ilustrado abaixo.

chmod +x telegram.sh
chown -R zabbix telegram.sh


3) ADICIONANDO BOT AO GRUPO DE MONITORAMENTO.

Para que possamos usufruir do monitoramento entre equipes, precisamos criar um grupo no aplicativo Telegram, Ex: “Monitoramento Zabbix”. Realize a criação do grupo e adicione seu bot a ele.

Precisamos agora enviar uma mensagem para o bot a partir do grupo. Isso é importante, pois através da interação com o bot, conseguiremos pegar o ID do grupo que será utilizado nas configurações do Zabbix. Envie uma mensagem para o bot a partir do grupo criado conforme ilustrado abaixo.

/start@Jarbaszabbix_bot

Em seu navegador, vamos acessar as informações destinadas ao bot. Para isso, acesse o endereço ilustrado abaixo e substituindo a variável <BOT_TOKEN> pelo token do seu bot.

curl &quot;https://api.telegram.org/bot&lt;BOT_TOKEN&gt;/getUpdates&quot;

Você será capaz de visualizar algumas informações sobre seu bot, inclusive o ID do grupo no qual o mesmo pertence.

4) TESTANDO SCRIPT.

Com as devidas configurações realizadas, precisamos agora testar nosso script. Para isso, execute o mesmo a partir do shell, conforme ilustrado abaixo.

./telegram.sh &lt;ID_USER&gt; Teste Mensagem

A variável “ID_USER” deve ser substituída pelo ID do usuário disponibilizada no link executado no brower, conforme mencionado no passo 3. Se a execução do script for satisfatória, você verá em seu Telegram a mensagem “Teste Mensagem” enviada pelo bot.

5) ADICIONANDO SCRIPT AO ZABBIX.

Vamos realizar a integração de nosso script com a ferramenta Zabbix. Para isso acesse “Administração>Tipos de Mídias” é clique em “Criar tipo de mídia“. Feito isso, realize as configurações conforme ilustrado abaixo e em seguida clique em “Adicionar“.

Agora precisamos ir em “Administração>Usuários“, escolha o usuário, no nosso caso estamos utilizando o usuário Admin. Selecione “Mídia” e clique em “Adicionar“. Realize as configurações conforme ilustrado abaixo.

O Campo “Enviar para” deve ser substituído pelo ID do grupo de monitoramento no qual o bot pertence. Este ID pode ser encontrado pelo browser, através do link informado no passo 3. Realize a configuração e clique em “Adicionar“.

Por último, precisamos configurar nossas ações “Triggers“, no qual irão fornecer as informações necessárias através do script Telegram. Para isso, acesse “Configuração>Ações” e clique em “Criar ação“. Definas as configurações conforme ilustrado abaixo.

Também precisamos definir as operações. Acesse a opção “Operações” e clique no botão “Nova” localizado na parte inferior da tela, conforme ilustrado abaixo.

Defina o usuário, no nosso caso estamos utilizando o usuário Admin, e clique em “Adicionar“.

Feito isso, clique em “Adicionar” para finalizarmos a configuração da nova ação, conforme ilustrado abaixo.

Pronto, nossa ferramenta Zabbix já esta integrada com o Telegram.

CONCLUSÃO

Neste artigo foi abordado de maneira prática, a utilização do aplicativo Telegram para monitoramento de alertar emitidos pela ferramenta Zabbix.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

35 respostas

  1. Olá Rafael, sim! Muito Obrigada. Esclareceu as minhas dúvidas e consegui por em prática tais situações. Um abraço e sucesso.

  2. Boa tarde,

    Simples e objetivo! Parabéns!!!
    só um parentese..
    Eu estava encontrando esse erro no envio da mensagem:
    ValueError: Timeout value connect was (3.5, 9999), but it must be an int or float. (zabbix 3.4)

    Solucionei atualizando API com esse comando
    #sudo pip install pyTelegramBotAPI –upgrade

    1. Boa tarde Diego! Obrigado, fico duplamente feliz rsrs, a primeira por poder ajudar de alguma forma, e a segunda por receber sua contribuição. Muito obrigado! Ela fica registrado aqui, assim se surgir alguém com problema semelhante já absorve a solução abordada por você. Abr.

  3. Oi Rafael, sim me respondeu em partes!

    Mas é preciso criar um novo bot ou posso criar grupos diferentes apenas? A minha ideia é manter o mesmo bot e criar outros grupos para inserir mídias diferentes no zabbix (Administração>Mídia). Seguindo essa lógica colocaria apenas o novo id do grupo no campo “Enviar para:”. Em resumo a ideia é enviar diferentes mensagens para diferentes pessoas. Se eu criar um novo bot eu terei que mudar o tokem no passo 2, no script, e não sei como fazer isto. Meu raciocínio está correto?

    1. 1) No app telegram você pode inserir o mesmo bot em quantos grupos quiser, este seria o primeiro passo.

      2) Você pode adicionar várias “Mídias” ao usuário (Passo 3). Para cada mídia adicionada, você deve informar o grupo no qual o bot pertence. Desta forma você terá um único script atrelado a um único bot_token, porém membro de grupos diferentes.

      Uma outra alternativa é criar bots diferentes utilizando scripts diferentes, exemplo: telegram1.sh, telegram2.sh etc… A regra é: Cada script representa um bot.

      No meu caso só utilizo um único bot, não tive a necessidade de criar vários bots para vários grupos, dependendo do que quer monitorar parece interessante.

      Espero desta vez ter conseguido responder! 🙂

      Att.

  4. Olá, ótimo tutorial.Eu posso criar um novo bot e add diferentes pessoas nogrupo?

    O meu user id não vai alterar? é só refazer o passo 3 em diante?

    Obrigada

    1. Bom dia Laura!

      Obrigado, fico feliz que tenha gostado. Respondendo sua pergunta, você pode criar quantos grupos e bots quiser, porém o que vai mandar é o BOT_TOKEN do script, cada bot tem um código bot_token diferente, assim como cada grupo possui um ID diferente também. O ID mencionado no artigo esta relacionado a identificação do grupo no qual deseja que o bot envie informações. Espero ter conseguido responder sua pergunta. Att.

  5. Para quem esteja sendo apresentado o erro:

    Traceback (most recent call last):
    File “./telegram.sh”, line 8, in
    MESSAGE=sys.argv[3]
    IndexError: list index out of range

    Ele ocorre devido a falta de informar o campo MESSAGE ao executar o script na mão.

    Dará erro:

    ./telegram.sh Teste

    Não dará erro:

    ./telegram.sh Teste Mensagem

  6. Fala Rafael Oliveira, boa tarde!

    Estou encontrando este erro quando vou executar o script. Ja li e reli tudo e nao achei o erro.

    root@zabbix:/usr/lib/zabbix/alertscripts# ./telegram 129452749 Teste Mensagem Traceback (most recent call last):
    File “./telegram”, line 3, in
    import telebot,sys
    ImportError: No module named telebot

  7. Amigo estou com o seguinte erro, pode me ajudar?

    Traceback (most recent call last):
    File “./telegram.sh”, line 8, in
    MESSAGE=sys.argv[3]
    IndexError: list index out of range

    1. Bom dia Jose! Creio que esteja faltando passar informação do zabbix para o script, da um pente fino no artigo e verifique se existe algo errado ou diferente. O “IndexError” significa que o script está tentando acessar a posição do ponteiro “[3]” da lista, porém essa posição não existe, como se a lista de argumentos fosse menor, faltando passar o argumento da posição “sys.argv[3]”. Depois compartilha aqui o resultado, abr.

  8. Por favor alguém pode me ajudar. Vou descrever o erro abaixo.

    root@krauserXserver:/usr/local/share/zabbix/alertscripts# ./Telegram.sh 221172035 tst 443
    Traceback (most recent call last):
    File “./Telegram.sh”, line 13, in
    tb.send_message(DESTINATION, SUBJECT + ‘\n’ + MESSAGE)
    File “/usr/local/lib/python2.7/dist-packages/telebot/__init__.py”, line 470, in send_message
    reply_markup, parse_mode, disable_notification))
    File “/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py”, line 135, in send_message
    return _make_request(token, method_url, params=payload, method=’post’)
    File “/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py”, line 54, in _make_request
    timeout=(connect_timeout, read_timeout), proxies=proxy)
    File “/usr/local/lib/python2.7/dist-packages/requests/sessions.py”, line 508, in request
    resp = self.send(prep, **send_kwargs)
    File “/usr/local/lib/python2.7/dist-packages/requests/sessions.py”, line 618, in send
    r = adapter.send(request, **kwargs)
    File “/usr/local/lib/python2.7/dist-packages/requests/adapters.py”, line 521, in send
    raise ReadTimeout(e, request=request)
    requests.exceptions.ReadTimeout: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Read timed out. (read timeout=3.5)

    Já tentei de tudo mas não consegui resolver

    1. Bom dia Wellington, verifiquei seu erro, creio que esteja relacionado a versão do pacote “pyTelegramBotAPI” é interessantes verificar o github da biblioteca utilizada, desta forma é possível acompanhar os erros do pacote que poderão vir a existir, a versão que foi utilizada com sucesso na configuração deste artigo foi “3.1.0”. Abr.

        1. Bom dia Andre! Eu criei como padrão utilizando Debian, pois é o sistema que mais trabalho. Se você domina o CentOS, conseguirá realizar as configurações sem problema. Só precisa entender as características e diferenças entre eles. Estou anotando aqui seu pedido, futuramente vou tentar montar para os dois ambientes. Abr. 😉

          1. Gostaria tb de um tuto para o Centos 7, estou penando com esse erro.

            Traceback (most recent call last):
            File “/usr/lib/zabbix/alertscripts/telegram.py”, line 2, in
            import telebot,sys
            ImportError: No module named telebot

            Não sei mais onde recorrer.

          2. Fala Bruno, está na agenda aqui para montar o zabbix com base em Centos, assim que fizer público no site, cadastre seu email no site caso ainda não fez para acompanhar. Sobre o erro, parece que ele não encontrou o módulo do telebot. Assim que fizer verifico esse problema. Abr.

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!