Em caso de dúvida, sugestão ou dificuldade junte-se a nós no Grupo do Telegram Gráfico no Email e Telegram.
O "How to" foi testado no ZABBIX 2.4 ao 5.4 no Debian 8 ao 10, Ubuntu 14 ao 20 e CentOS 6.x ao 8, caso não utilize estas distros procure os pacotes descritos para sua necessidade.
- Requisitos
- Chave API WhatsApp
- Chave API Telegram
- Parametros do script
- Consultando informação
- Comando de teste
- Configuração do front
- Detalhes sobre o arquivo de configuração
- Conclusão
- Contribuições
- Agradecimentos
0 – Ter instalado Python 3.6 (ou superior)
1 – Estar logado como root
2 – Executar os seguintes comandos
Debian/Ubuntu
sudo apt-get install -y wget dos2unix git sudo curl bc
CentOS 6.x, 7 e 8
sudo yum install -y wget dos2unix git sudo curl bc
Faça o download do script de instalação
cd /tmp ; wget https://raw.githubusercontent.com/sansaoipb/scripts/master/notificacoes.sh -O notificacoes.sh ; sudo dos2unix notificacoes.sh ; sudo bash notificacoes.sh
Para usar este envio é necessário contratar o serviço, em conversa com o responsável consegui um desconto de 50%,
basta informar o cupom zabbix20S
.
Caso use somente o envio por WhatsApp, DESCONSIDERE OS PRÓXIMOS PASSOS, e vá direto para a configuração CLICANDO AQUI
Para iniciarmos, CLIQUE AQUI e faça o login usando sua conta para criar a chave API do Telegram:
Após o login aparecerá esta tela, faça o preenchimento da forma que preferir e clique em "Create application", após isso aparecerá os campos que precisamos, são eles:
o api_id e api_hash.
Criando 'Client App'
Para iniciarmos a configuração de envio, é preciso editar o arquivo de configuração e depois executar o script manualmente para efetivar o login, então entre no diretório “que o script indicou”
e edite os campos abaixo contidos no arquivo configScripts.properties
:
OBS:
1 – O usuário que você declarar no campo “user” precisa ter permissão no mínimo de leitura no ambiente.
2 – Os campos contidos em [PathSectionEmail], [PathSectionTelegram] e [PathSectionWhatsApp], são opcionais, logo se for usar somente telegram, não é necessário preencher a parte do email, assim como de forma inversa.
3 – Se usar gmail, é preciso alterar o acesso à conta para aplicativos, se tiver "Verificação em duas etapas" ativado, é necessário criar uma "Senha de app", crie
Aqui.
Caso não tenha verificação em duas etapas, pode somente ativar "Acesso a app menos seguros", altere
Aqui.
[PathSection]
- “url” = http://127.0.0.1/zabbix - URL de acesso ao FRONT com "http://"
- “user” = Admin
- “pass” = zabbix
[PathSectionEmail]
- “smtp_server” = smtp.gmail.com:587
- “mail_user” = SeuEmail@gmail.com
- “mail_pass” = SuaSenha
[PathSectionTelegram]
- “api.id” = 1234567
- “api.hash” = 12asdc64vfda19df165asdvf984dbf45
[PathSectionWhatsApp]
- “line” = 5511950287353
- “acess.key” = XGja6Sgtz0F01rbWNDTc
- “port” = 13008
OBS:
1 - Caso tenha interesse em usar somente o envio por WhatsApp, DESCONSIDERE OS PRÓXIMOS PASSOS, CLICANDO AQUI
2 - Caso esteja usando conta invés de bot, terá a vantagem de usar este módulo de consulta, se estiver usando bot, este comando só servirá para finalizarmos a vinculação do remetente.
Este comando, também trará a quantidade e as informações de todos os seus chats, como: Tipo, Nome, ID... Mas somente para quem estiver USANDO CONTA.
sudo -u zabbix ./notificacoes-teste.py --infoAll
3 – Ao executar o comando acima, será solicitado inserir o token do bot ou número de telefone da conta que será usada para envio,
se optar por usar BOT: cole o token, dê ENTER e
DESCONSIDERE OS PRÓXIMOS PASSOS, CLICANDO AQUI
4 – Se optar por usar CONTA, use a seguinte estrutura de telefone
5522988776655
(prefixo para o Brasil, DDD e número),
depois que der “Enter”, receberá um código por SMS e/ou no aplicativo
(no desktop, no celular ou na versão web, basta estar logado),
adicione o código e estará pronto.
Para consultar a configuração de um usuário, grupo ou canal específico, execute o comando abaixo:
Script info ID, Nome ou user.
Exs:
sudo -u zabbix ./notificacoes-teste.py --info "-123456789"
ou
sudo -u zabbix ./notificacoes-teste.py --info "Nome Sobrenome"
ou
sudo -u zabbix ./notificacoes-teste.py --info "usuário"
Pegue o “ID”, o “nome de cadastro” ou o "nome de registro" que aparecerá para executar o teste e posteriormente colocar no zabbix.
OBS:
1 – Lembrando novamente que o comando "info", NÃO FUNCIONA COM BOT.
OBS:
1 – "-123456789", "Nome Sobrenome" ou "usuário" são informações fictícias para exemplificar, busque um UserID ou nome de usuário válido no seu ambiente, se for grupo ou canal use prioritáriamente o "id";
2 – É recomendado aumentar o tempo de timeout da aplicação, então no arquivo de configuração do server.
(se não mudou o local padrão, estará aqui /etc/zabbix/zabbix_server.conf
ou aqui /usr/local/etc/zabbix_server.conf
)
vá até o paramemtro # Timeout=3
descomente e aumente para 30, ficando assim:
Timeout=30
dessa forma fica garantido a entrega.
3 – A estrutura de teste para o WhatsApp será (prefixo para o Brasil, DDD e número): 5522988776655
;
Para Telegram será: prioritariamente por ID (podendo usar também: 'Nome Sobrenome' ou '@usuário' se não estiver usando bot);
Para Email será: usuario@provedor.com.
E para realizar 3 envios ao mesmo tempo, basta colocar as informações separados por vígula, por Ex:
sudo -u zabbix ./notificacoes-teste.py --send "-123456789, 5522988776655, usuario@provedor.com"
Script para realização do teste e iniciar a configuração:
Script, ID, Nome ou user.
Exs:
sudo -u zabbix ./notificacoes-teste.py --send "-123456789"
ou
sudo -u zabbix ./notificacoes-teste.py --send "Nome Sobrenome"
ou
sudo -u zabbix ./notificacoes-teste.py --send "usuário"
Com o script adicionado no local indicado acima, precisamos realizar algumas configurações no Front do ZABBIX, no "Tipo de Mídia", (em Administração > Tipo de Mídia) e na "Ação" (em Configuração > Ações).
Existe somente uma exigência na “Mensagem Padrão”,
a primeira linha deve permanecer com as macros/variáveis abaixo ilustradas
(as macros/variáveis entre as "#" ),
podendo editar da segunda linha em diante, seja no "Modelo de mensagem" em "Tipo de mídia" ou na ação.
Modelo Mensagem (Incidente)
{TRIGGER.ID}#{EVENT.ID}#FF0000#10800# IP/DNS: {HOST.CONN} Último valor: {ITEM.LASTVALUE}
Modelo Mensagem (Recuperação)
{TRIGGER.ID}#{EVENT.ID}#00C800#3600# IP/DNS: {HOST.CONN} Último valor: {ITEM.LASTVALUE} Duração: {EVENT.DURATION}
OBS:
Os valores
”FF0000” ou ”00C800” são apontamentos para as informar a lista de cores que será utilizada na linha do gráfico
(alarme ou normalização), e ”10800” ou ”3600” é o período do gráfico (3h ou 1h) em segundos.
Por sugestão de "Everaldo Santos Cabral" (@everaldoscabral)
Vamos entender um pouco as funções configuráveis do arquivo de configuração (configScripts.properties
)
[PathSection]
- ack - Ativa/Desativa o ack nos eventos
- salutation - Ativa/Desativa todas as saudações
- path.logs - indica o local onde o log será salvo, o "default" é um diretório "log" no mesmo local do script, se alterar precisa garantir que o usuário zabbix tenha permissão para escrita este local.
[PathSectionEmail]
- salutation.email - Ativa/Desativa a saudação do email
- mail.from - descreve o remetente.
[PathSectionTelegram]
- salutation.telegram - Ativa/Desativa a saudação do Telegram
- path.graph - caminho onde a imagem para o gráfico será salvo.
[PathSectionWhatsApp]
- salutation.whatsapp - Ativa/Desativa a saudação do whatsapp
- cod.ddi - Faz referência ao país do destinatário para whatsapp
1 – Este script é para agilizar a análise e ficar visualmente mais agradável o recebimento dos alarmes.
2 – O script realiza uma consulta API mais ampla no zabbix, detecta automaticamente se o item é de caracter/log/texto, e não envia o gráfico "sem dados" somente o texto, ele dá "ack" no evento e informa quem foi notificado naquela ação, armazena log e faz a comunicação diretas entre APIs.
Neste link você consegue criar de modelos para mensagens HTML, que foi indicado pelo amigo "Mario"
(@ZXRTI)
Site para criação de modelos HTML
Gostaria de agradecer as mais de 400 pessoas que estão no "grupo dos projetos", que serve como ajuda/sugestão/contribuição e aos que participam mais ativamente ajudando, sugerindo, pontuando, indicando melhorias e testando.
-
A criação deste projeto unificado (email e telegram), foi depois de uma conversa e o de "Everaldo Santos Cabral" (@everaldoscabral) dizer que a informação do arquivo de configuração era "inútil" pra quem usava somente um projeto, e isso me deu um luz para fazer algo diferente.
-
Hoje os projetos tem tantas melhorias e aprimoramentos, muito graças ao "Abner Klug" (@abnerk), que sempre trouxe várias ideias, como colocar opção ao ack, a saudação, dentre outras... Todos podem colaborar para fazermos uma comunidade mais forte e projetos cada vez melhores.
-
Ao "Gabriel R F" (@GabrielRF) que me apresentou ao pyrogram, me abrindo o caminho a alteração na forma de envio, aprimorando e dando mais possibilidades para o projeto.
Obrigado a todos os envolvidos, tanto pela disponibilidade para fazer os teste, como pela ajuda, confiança e coparticipação nos projetos.