Zabbix 4.2 enviando alertas no Telegram via Bot (Debian 10)

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

Requisitos:
Instalação do Zabbix 4.2 no Debian 10 Buster

Criando Bot no telegram

Abra o Telegram e procure por @BotFather.
Inicie a conversa com ele.

– Digite o comando /newbot para iniciar a criação de um novo bot.
– Após o comando você vai dar um nome para seu bot. Ex.: “Bot Legal RR”.
– Em seguida é necessário digitar o nome de usuário para o bot, sendo obrigatório terminar com bot. Ex.: “legallrr_bot”.
– Ao finalizar você receber informações com seu TOKEN, que vamos utilizar em seguida.

Neste exemplo nosso token para acessar a API HTTP ficou:
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.

Abra em seu seu navegador a seguinte URL https://api.telegram.org/botTOKEN/getUpdates para descobrir o ID do usuário que enviou a mensagem ou de um grupo.
Ex.: https://api.telegram.org/bot757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0/getUpdates

:: Chat privado ::

ID do chat privado: 999999999

Se desejar criar um grupo também, basta adicionar seu bot a ele, após adiciona-lo envia uma mensagem como /teste para que possamos coletar o ID do grupo.

:: Chat em Grupo ::

ID do chat grupo: -888888888

Grupo sempre tem um sinal “-” na frente 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

É necessário ter o curl instalado, 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 para verificar se seu bot já consegue fazer o envio de mensages.

::Configurações no Zabbix ::

AdministraçãoTipos de mídiasCriar tipo de mídia

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

Ativo: Sim

AdministraçãoUsuários Clique no usuário Admin

Com as opções do usuário aberto clique na aba Mídia clique no Adicionar (2)

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

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

De um nome para sua ação
Nova condição: Incidente suprimidoNão

Aba Operações
Assunto padrão:

Mensagem padrão

Operações: 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 praticamente na aba Operações de recuperação

Assunto padrão:

Mensagem padrão

Pode clicar agora em Adicionar na seção Operações

Aba Operações de atualização

Assunto padrão:

Mensagem padrão


E por fim clique no botão Adicionar.

Pronto! Agora precisamos gerar um incidente para ver se nosso alerta será enviado para o Telegram.
No meu caso vou atualizar meu root server do bind9.11 para ver se recebo alertas. Vou editar o arquivo /usr/share/dns/root.hints (que na versão do debian 9 era /etc/bind/db.root). Possuo um template que criei onde ele verifica alterações no arquivo: zbx_export_templates_bin9.11.xml

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

Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

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

24 Resultados

  1. Henrique Claus disse:

    Que fantástico meu amigo! Obrigado por compartilhar o conhecimento!
    Implementado e funcional no Ubuntu Server 18.04 + Zabbix 4.4.3

  2. Elmar Uliano disse:

    Bom dia.
    As mensagens enviadas pelo terminal chegam no telegram normalmente.
    As mensagens na interface web do zabbix aparecem como enviadas mas não aparecem no telegram.
    Poderia me ajudar por favor?

  3. Parabéns, objetivo! ajudou estou sendo notificado.

  4. Diego disse:

    Cara muito obrigado o tutorial está perfeito, porém a empresa usa a versão 3.2.0 do Zabbix não tem as opções de operações de recuperação, é p possível configurar mesmo assim pra chegar outro tipo de mensagem quando o link retornar?

  5. Miqueias Silva Martins disse:

    Bom dia, estou recebendo apenas o assunto da mensagem e não o conteúdo dela, e os comando de html não estão funcionando.

  6. Nelson disse:

    muito bom, funcionou tranquilo aqui. valeu!!!

  7. Nathan disse:

    Parabéns pelo artigo, very nice!

  8. Itallo Pedrosa disse:

    Como inseri os emojis nas mensagens ??? de problema e correção

  9. Parabéns pelo artigo! Ficou muito bom, preciso e funcional.

  10. Fabiano disse:

    Rudimar,
    Consigo enviar mensagem através do terminal do servidor mas quando vai para o Zabbix ele mostra a seguinte mensagem de erro: Timeout while executing a shell script.

  11. Michel Araujo Santos disse:

    Esta dando este erro.

    Traceback (most recent call last):
    File “/usr/lib/zabbix/alertscripts/alerta_telegram.py”, line 14, in
    alerta.send_message(DESTINATARIO, ASSUNTO + ‘\n’ + MENSAGEM, disable_web_page_preview=True, parse_mode=’HTML’)
    File “/usr/lib/python2.7/site-packages/telebot/__init__.py”, line 598, in send_message
    reply_markup, parse_mode, disable_notification))
    File “/usr/lib/python2.7/site-packages/telebot/apihelper.py”, line 140, in send_message
    return _make_request(token, method_url, params=payload, method=’post’)
    File “/usr/lib/python2.7/site-packages/telebot/apihelper.py”, line 56, in _make_request
    return _check_result(method_name, result)[‘result’]
    File “/usr/lib/python2.7/site-packages/telebot/apihelper.py”, line 75, in _check_result
    raise ApiException(msg, method_name, result)
    telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
    [{“ok”:false,”error_code”:400,”description”:”Bad Request: can’t parse entities: Unmatched end tag at byte offset 29, expected \”\”, found\”\””}]

  12. Michel Araujo Santos disse:

    Boa tarde,

    Minha estrutura esta funcionando tudo certinho. Porém, só estou recebendo as notificações com o problema. Quando o problema esta normalizado não estou recebendo notificação de normalização do problema.
    O que pode estar acontecendo?

  13. Diego disse:

    Deu certinho aqui, show!

  14. Santiago disse:

    As mensagens executadas pelo terminal, chegam normalmente no grupo, mas quando envio pela ação criada, não chegam.
    Nos logs do zabbix em reports, aparecem como enviados.

  15. Santiago disse:

    Ao colocar as informações no navegador seguido do Token, aparece apenas isso na página, o ID do chat não vem.

    ok true
    result []

  16. Christian Rosa disse:

    Quanto tento ocorre isso abaixo

    root@mbmzabbix:~# telegram “-313693214” “Mensagem via Terminal para o grupo”
    usage: telegram [-ynsr] user [ttyname] [message…]

  17. Ricardo Gonçalves disse:

    Não achei o ‘incidente suprimido’ nas opções, onde eu posso adicionar a condição?

Deixe uma resposta

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