Zabbix 4.0 + Alertas no Telegram via Bot


Vamos aprender como receber os alertas do zabbix através do telegram.

Para instalação do Zabbix 4.0
Instalação do Zabbix 4.0 / 3.4 / 3.0 no Debian 9 Stretch com banco de dados MariaBD

Criando nosso bot

Abra APP do telegram e procure por @BotFather Comece uma uma conversa com ele.

Agora digite /newbot para criar um novo bot. Após o comando você vai dar um nome “Bot Legal RR”. Em seguida é necessário digitar o nome de login sendo obrigatório terminar com bot “legallrr_bot”. Você vai ter um retorno com token que vamos utilizar em seguida.

Nosso token para acessar a API HTTP:
757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0

Agora procure pelo seu bot e comece uma conversa com ele e envie uma mensagem de teste para o mesmo, pois vamos precisar descobrir o ID do seu usuário, para que ele possa lhe enviar as mensagens.

Agora vamos acessar a seguinte URL https://api.telegram.org/botTOKEN/getUpdates para descobrir o ID do usuário que enviou a mensagem.
Ex.: https://api.telegram.org/bot757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0/getUpdates

Você pode criar um grupo também e adicionar seu bot nele, após adiciona-lo envia uma mensagem como /teste para que possamos coletar o ID do grupo.

Note que o nome do grupo meu com um “” no inicio do ID.

Para testarmos se o envio esta funcionando, abra seu navegador e cole a seguinte URL:
https://api.telegram.org/botTOKEN/sendMessage?chat_id=ID&text=Minha%20Mensagem
Ex.: https://api.telegram.org/bot757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0/sendMessage?chat_id=-252697045&text=Minha%20Mensagem
https://api.telegram.org/bot757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0/sendMessage?chat_id=221122111&text=Mensagem%20Direta

Vamos instalar o curl, uma ferramenta para comando para transferência de dados com sintaxe URL.

O diretório padrão no zabbix para os scripts fica em /usr/lib/zabbix/alertscripts/.
(Obs: No tutorial Zabbix 3.0.x com notificações via Telegram nos alteramos o valor de AlertScriptsPath, então caso você seja um leitor que quer apenas migrar, volte o diretório esta em /opt/telegram)

Vamos criar o arquivo telegram

De permissão para executar, em seguida vamos criar um atalho em /usr/bin/ e alterar as permissões para o usuário do zabbix.

Agora execute em seu terminal

Integrando o Telegram com o Zabbix

Se você recebeu as mensagens agora vamos ao nosso zabbix.
Clique em: AdministraçãoTipos de mídiasCriar tipo de mídia

Nome: Telegram
Tipo: Script
Nome script: telegram
Parâmetros do script
{ALERT.SENDTO}
{ALERT.SUBJECT}

Ativo: Sim


Clique em: Adicionar

Agora vá em: AdministraçãoUsuários e sobre o usuário Admin

Com as opções do usuário aberto clique na aba Mídia e em Adicionar

Tipo: Telegram
Enviar para: ID-Do-Grupo/ID-Usuário

Adicionar

Atualizar

Agora vamos criar a ação que fará o envios dos alertas.
Menu: ConfiguraçõesAçõesCriar ação

De um nome para sua ação
Nome: Reportar Problema no Telegram
Crie uma no Nova condição: Incidente suprimido

Na aba Operações
Assunto padrão:

Operação: Clique em Nova Mais campos se abrirão, agora em Enviar para Usuário Clique em Adicionar e Selecione o Usuário Admin qual configuramos a mídia. Na opção Enviar apenas para: Selecione Telegram, e em seguida Adicionar

Vamos repetir a mesma coisa na aba Operações de recuperação
Mas com o Assunto padrão:

Pode clicar agora em Adicionar

Pronto! Agora precisamos gerar um incidente para ver se nosso alerta será enviado para o Telegram.
No meu caso vou fazer uma edição /etc/bind/named.conf.options qual possuo um template que criei onde ele verifica a cada modificação no arquivo e me envia um alerta vfs.file.cksum[/etc/bind/named.conf.options].diff(0)}>0


Bingo! Tudo certo, nosso sistema de envio de mensagem está concluído!

Gostou? Deixe seu comentário ficarei feliz em saber que lhe ajudei, e se tiver qualquer pergunta deixe-a também, se preferir acesse o menu Contato lá você encontra meios de falar comigo!

Abraço!

Fontes: https://core.telegram.org/bots & https://www.zabbix.com/documentation/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

33 Resultados

  1. Joao Santos disse:

    Opa cara, como voce conseguiu colocar esses emoji de OK e de o X ?

    Quando coloco isso no Zabbix ele da erro e nao me deixa colocar nem no subject nem na mensagem

  2. Pytter Andrade disse:

    Parabéns Cara, Excelente!

    Me ajudou bastante.

  3. Daniel Castilho disse:

    Gostaria que o telegram enviasse os graficos dos incidentes, poderiam me auxiliar

  4. Perfeito Parabéns novamente, apenas uma duvida chega apenas a “Assunto Padrão”, não é enviado a “Mensagem padrão, como seria para enviar a mesma

  5. Enrique Galarza disse:

    Tested, but I have received only one message from zabbix. In the terminal test messages, all was fine, but when scripts where running, only one of many events has been received in my telegram client, regardless, the monitor says all messages has benn delivered. I will keep testing.

    Thanks a lot for the tutorial. Best regards.

  6. Henrique disse:

    Primeiramente parabéns pelo tutorial Rudimar.
    Estou com um problema e gostaria de ajuda se possível.

    Segui todo o tutorial e consegui enviar a mensagem através da linha de comando, porém quando a trigger é ativada, consta que a mensagem foi enviada, porém ele não envia de fato.

    No log do script telegram não aparece nada, é como se o Zabbix não tivesse executando o script.
    Quando faço o envio pela linha de comando aparece no log e mensagem é enviada normalmente.

    Já confirmei o diretório, permissão de leitura, escrita, execução.

    Novamente parabéns e agradeço caso possa ajudar.

    • Verifique na ação se as condições estão certas. (Já aconteceu comigo de ter q excluir a ação e criar novamente)

      • Henrique disse:

        Obrigado pelo retorno Rudimar.
        Refiz a ação exatamente como o tutorial, mas creio que seja algum problema de permissão do usuário zabbix.

        Habilitei o uso do shell para o usuário zabbix e ele não envia mensagem pela linha de comando.

        Já dei permissão no arquivo, inclui no sudoers (usuário e grupo) e mesmo usando “sudo telegram …” ele não executa o script.

        Vou continuar tentando, alguma forma funcionará rs.

        Novamente parabéns e obrigado pela atenção, abc.

    • Josué Bezerra disse:

      Olá, tive o mesmo problema. Para resolver eu fui em Reports -> Action Log e verifiquei que o texto da minha trigger era muito grande. Fiz o teste executando o script com o texto da minha trigger e a mensagem não chegou, após isso diminui o tamanho do texto e a mensagem foi enviada com sucesso.
      Acho que é uma limitação do telegram.

  7. Victor Fonseca disse:

    Boa tarde! Estou fazendo testes utilizando ubuntu server, quando executo o comando no terminal não aparece nenhuma falha, porém não chega a mensagem, alguma ideia do que pode ser? Grato!

  8. Ledson disse:

    Quando dou o comando no terminal:
    curl –silent –output /dev/null “https://api.telegram.org/bot711022803:AAE_qJvtVeogljhKsMqzYzNnB-WKGAdF04E/sendMessage?chat_id=-387922844&text=Mensagem via Terminal para o grupo”
    A mensagem é enviado normalmente…
    Mas quando dou o comando: telegram “-387922844” “Mensagem via Terminal para o grupo”
    A mensagem não é enviada.

    • Rodrigo disse:

      Amigo, boa tarde

      Também apanhei nessa parte, corrigi a URL para:

      curl –silent –output /dev/null “https://api.telegram.org/bot$TOKEN/sendMessage?chat_id=$USER&text=$SUBJECT”

    • Pigosso disse:

      nesse caso, voce tera que fazer o seguinte ttps://api.telegram.org/bot711022803:AAE_qJvtVeogljhKsMqzYzNnB-WKGAdF04E/sendMessage?chat_id=-387922844’&’text=Mensagem via Terminal para o grupo”

      adicionar um ” entre o & da url assim como fiz acima

  9. Olá, tudo bem? Apenas uma correção no texto, o print tá certo:

    De: Crie uma no Nova condição: Incidente não suprimido
    Para: Crie uma no Nova condição: “Incidente suprimido”

    Excelente artigo, vlw!

  10. Eduardo Sousa disse:

    Amigo parabéns pelo post ficou perfeito !!!

  11. Israel Caruso disse:

    Boa tarde…
    Funciona no CentOS ?

  12. Janilson disse:

    SHOW!… 100% … OBRIGADO POR COMPARTILHAR…

  13. Jackson disse:

    Amigo, estou com esse problema, sabe de algo que possa me ajudar ?

    Traceback (most recent call last):
    File “./telegram”, line 13, in
    tb.send_message(DESTINATION,SUBJECT + ‘\n’ + MESSAGE)
    File “/usr/local/lib/python2.7/dist-packages/telebot/__init__.py”, line 598, in send_message
    reply_markup, parse_mode, disable_notification))
    File “/usr/local/lib/python2.7/dist-packages/telebot/apihelper.py”, line 140, 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 512, in request
    resp = self.send(prep, **send_kwargs)
    File “/usr/local/lib/python2.7/dist-packages/requests/sessions.py”, line 622, in send
    r = adapter.send(request, **kwargs)
    File “/usr/local/lib/python2.7/dist-packages/requests/adapters.py”, line 526, in send
    raise ReadTimeout(e, request=request)
    requests.exceptions.ReadTimeout: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Read timed out. (read timeout=3.5)

  14. Sérgio Lackmann disse:

    Show Rudimar, obrigado por compartilhar conosco. Um grande abraço!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *