Graphical_notifications_Zabbix icon indicating copy to clipboard operation
Graphical_notifications_Zabbix copied to clipboard

Doações

PagSeguro

PayPal

PicPay

Graphical Notifications Zabbix

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 6.2 no Debian 8 ao 11, Ubuntu 14 ao 20 e CentOS 6.x ao 8, caso não utilize estas distros procure os pacotes descritos para sua necessidade.

Sumário

  • 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

Requisitos:

0 – Ter instalado Python 3.9 (ou superior)
1 – Estar logado como root
2 – Executar os seguintes comandos

Instale os pacotes:

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 gcc libffi-devel python-devel openssl-devel libevent-devel

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

Criando Chave API WhatsApp:

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.

Para contratar acesse o site https://www.netizap.app/

Caso use somente o envio por WhatsApp, DESCONSIDERE OS PRÓXIMOS PASSOS, e vá direto para a configuração CLICANDO AQUI

Criando Chave API Telegram:

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'



Edite os parâmetros:

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, é necessário criar uma "Senha de app", CRIE 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” = [email protected]
  • “mail_pass” = SuaSenha
[PathSectionTelegram]
  • “api.id” = 1234567
  • “api.hash” = 12asdc64vfda19df165asdvf984dbf45
[PathSectionWhatsApp]
  • “line” = 5511950287353
  • “acess.key” = XGja6Sgtz0F01rbWNDTc
  • “port” = 13008

Consultando Configuração

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.

Comando para teste

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á: [email protected].
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, [email protected]"

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"

Configurando envio:

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

Tipo de Mídia



Configuração para envio:

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.

Imagem da Mensagem:



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.

Configurando o usuário



Resultado:



Arquivo de configuração


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

Conclusão


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.

Contribuições

Neste link você consegue criar de modelos para mensagens HTML, que foi indicado pelo amigo "Mario" (@ZXRTI)
Site para criação de modelos HTML

Agradecimentos

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.