Objetivo
Demonstrar como configurar notificações via Telegram para hosts e para serviços no OpMon.
Público-alvo
Administradores do OpMon que necessitam adicionar notiicações via Telegram.
Pré-Requisitos
- Python 3.6
- Pip 3 (Gerenciador de pacotes/móduloss do Python)
- Módulo Python – twx.botapi (verificar módulo, acessando o Python e usando o comando help(“modules”) ele irá listar os módulos existentes no Python.
Importante:
Caso queira mais informações sobre como instalar os módulos do Python, acesse as documentações abaixo:
Instalando e gerenciando pacotes do Python com PIP – Knowledge Base (opservices.com.br)
Configurando o Telegram
Vamos começar criando um Bot no Telegram, inicie uma conversa com o “BotFather”, conforme a imagem abaixo: O Bot do Telegram será o remetente dos alertas do OpMon.
Você receberá um token da API e também o UserID do bot:
- Token: 200194008:AAEG6djWC9FENEZaVIo3y3vZm24P3GTMetw
- UserID: 200194008
Vamos acessar o terminal!
Faça o download do script opmon_telegram.py e altere a permissão do arquivo que fará o envio de alertas via Telegram.
wget -O /usr/local/opmon/libexec/custom/opmon_telegram.py http://repo.opservices.com/rpms/plugins/opmon_telegram.py
chmod 755 /usr/local/opmon/libexec/custom/opmon_telegram.py
Esta é a configuração que você precisa fazer no OpMon:
- Acesse o menu “Ferramentas” e submenu “Configurações”:
- Na área de atalhos (lado esquerdo da tela) clique em “Commands“, depois disso altere o “Command Type” para “Notification Command”. E adicione um novo comando em “Add A New Command”.
- Adicione o novo comando de notificação para “hosts”. Configure as diretivas abaixo:
- Command Name: notify-host-by-telegram
- Command Line (Verificar antes de salvar, qual a localização do binário do Python 3.6, pode ser utilizado o seguinte comando – whereis python e substituir no comando abaixo, o caminho correto):
/usr/bin/python3.6 /usr/local/opmon/libexec/custom/opmon_telegram.py --token "Cole Seu TOKEN Aqui" --object_type host --contact "$CONTACTPAGER$" --notificationtype "$NOTIFICATIONTYPE$" --hoststate "$HOSTSTATE$" --hostname "$HOSTNAME$" --hostaddress "$HOSTADDRESS$" --output "$HOSTOUTPUT$"
- Command Description: Notificação de hosts via Telegram.
Veja na imagem abaixo:
Não esqueça de alterar o token da API.
Agora iremos criar o comando de notificação para serviços. Vamos lá!
- Os passos para criação de notificação de serviços são os mesmos que foram feitos para os hosts.
- Configure as diretivas abaixo:
- Command Name: notify-service-by-telegram
- Command Line (Verificar antes de salvar o comando, qual a localização do binário do Python 3.6, pode ser utilizado o seguinte comando no servidor – whereis python e substituir no comando abaixo, o caminho correto):
-
/usr/bin/python3.6 /usr/local/opmon/libexec/custom/opmon_telegram.py --token "Cole Seu TOKEN Aqui" --object_type service --contact "$CONTACTPAGER$" --notificationtype "$NOTIFICATIONTYPE$" --servicestate "$SERVICESTATE$" --hostname "$HOSTNAME$" --servicedesc "$SERVICEDESC$" --output "$SERVICEOUTPUT$" --hostaddress "$HOSTADDRESS$" --date "$LONGDATETIME$"
- Command Description: Notificação de serviços via Telegram.
Veja na imagem abaixo:
O plugin do OpMon Telegram é capaz de enviar alertas para um único contato ou para um grupo. Como você vai ver os ID’s de contato do Telegram são números e os ID’s de grupo do Telegram são números negativos.
Como obter seu UserID ou GroupID?
- Inicie uma conversa com o bot recém criado, neste caso “@my_opmon_bot” para obter o UserID.
- Adicione o Bot “@my_opmon_bot”, no seu grupo do Telegram para obter o GroupID.
- No navegador digite a url “https://api.telegram.org/bot<BOT_TOKEN>/getUpdates”, alterando o <BOT_TOKEN>, pelo token récem criado.
- Então temos o UserID (1271831332) e o GroupID (-442654125), conforme a imagem abaixo:
Agora faremos a configuração dos contatos e grupo de contatos no OpMon.
a) Acesse o menu “Ferramentas” e o submenu “Configurações”.
b) Na área de atalhos (lado esquerdo da tela) clique em “Contacts“ e “Add A New Contact“.
c) Configure as diretivas de configuração do seu contato, alterando a diretiva “Phone”, pelo “UserID” do Telegram.
d) Após a adição do contato, teremos que reconfigurar os comandos de notificação.
e) Adicione o comando de notificação “notify-host-by-telegram”, configurado anteriormente.
f) Faça o mesmo com o “Service Notification Commands”.
Agora vamos testar o envio de notificações!!
- opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “WARNING” –hostname “hostname.domain.tld” –servicedesc “load” –output “WARNING – load average: 3.48 4.19 2.74”
- opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “CRITICAL” –hostname “hostname.domain.tld” –servicedesc “load” –output “CRITICAL – load average: 233.29 154.35 15.05”
- opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “WARNING” –hostname “hostname.domain.tld” –servicedesc “load” –output “WARNING – load average: 3.48 4.19 2.74”
opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “CRITICAL” –hostname “hostname.domain.tld” –servicedesc “load” –output “CRITICAL – load average: 233.29 154.35 15.05”
opmon_telegram.py –token “Cole seu token aqui” –object_type service –contact “Cole aqui o UserID” –servicestate “OK” –hostname “hostname.domain.tld” –servicedesc “load” –output “OK – load average: 0.02 0.01 0.01″OK” –hostname “hostname.domain.tld” –servicedesc “load” –output “OK – load average: 0.02 0.01 0.01”
E este é o resultado: =D