Graphical Notifications Zabbix Save

Project README

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 3.0 ao 7.0 no Debian 9 ao 11, Ubuntu 20 e 22 e CentOS/Oracle Linux/Rocky Linux/Redhat 8.0+, caso não utilize estas distros procure os pacotes descritos para sua necessidade.

Sumário


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/Oracle Linux/Rocky Linux/Redhat+

sudo dnf install -y wget dos2unix git sudo curl bc gcc libffi-devel python3-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

Instalação do WhatsApp OpenSource

OBS:
1 – Esse procedimento foi testado e validado no Ubuntu 22.04, para outras versões/distribuições faça por sua conta.
2 – Eu realizei a instalação pelo vagrant usando a imagem oficial da Ubuntu ( "ubuntu/jammy64" ).
Tentei instalar em uma máquina com o zabbix, e não deu certo, logo, melhor ter uma VM somente para ele ou debugar e entender porque não funcionou.

Depois de aprovisionar VM, realize a instalação OpenSource no Ubuntu 22.04, realize a execução do comando abaixo.

curl -sSL https://raw.githubusercontent.com/marcilioramos/alert_wpp_zabbix/main/config_ambiente.sh | bash 

Depois de validar que o serviço está operacional, siga os proximos passos.
Caso o serviço não esteja OK, entre em contato no "grupo de ajuda" supracitado, para mais detalhes sobre a configuração, mas consulte o git do mantenedor e assista o video disponibilizado:
alert_wpp_zabbix (@MarcilioMRTelecom)

Contratação da API para WhatsApp

Caso não queira ter a responsabilidade de manter a aplicação Open Source, existe esta opção e será 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
  • “open.source” = no
  • “open.source.url” = http://127.0.0.1/api/SendGraph
  • “open.source.token” = kjhasdfgyuiwqeoihbjasdc

Consultando Configuração

OBS:
1 – Caso tenha interesse em usar um dos seguintes envios: WhatsApp PAGO, Email ou Teams (e NÃO VAI USAR o Telegram ou WhatsApp Open Source), DESCONSIDERE OS PRÓXIMOS PASSOS, CLICANDO AQUI

2 – [WHATSAPP] - Você pode pesquisar pelo nome, tanto do grupo como do usuário, mas o envio precisa ser feito pelo ID.

3 – [TELEGRAM] - 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. e não BOT

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

Comando para teste

OBS:
0 – Para envio do WhatsApp, não é possivel o envio por nome, é SOMENTE POR "ID".

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

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"

ou 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]"

4 – Para quem usa BOT, para pegar o ID (tanto do grupo/canal, como de tópico), basta copiar o link de alguma mensagem, como a estrutura abaixo.

5 – Caso seja Canal ou SuperGrupo, o ID precisará ser acionado "-100" a frente do ID, confome exemplo abaixo.

Grupo/Canal
https://t.me/c/4100493856/789654

ID Grupo/Canal

4100493856

ID Msg

789654
ID para envio
-1004100493856

Ex Grupo/Canal:
sudo -u zabbix ./notificacoes-teste.py --send "-1004100493856"

Tópico
https://t.me/c/4100493856/10562/789654

ID Grupo/Canal

4100493856

Tópico

10562

ID Msg

789654
ID para envio
-1004100493856_10562

Ex Tópico:
sudo -u zabbix ./notificacoes-teste.py --send "-1004100493856_10562"

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



Variaveis para o tipo de mídia
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

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.



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 neste 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
  • open.source - Define se vc estará usando a API paga ou open source.
  • open.source.url - Se definir o campo acima como yes, precisará apontar a URL na estrutura: http://IP_da_VM/api/nome_da_sessao_criada
  • open.source.token - Se definir o campo acima como yes, precisará informar o token gerado.
[PathSectionTeams]
  • salutation.teams - Ativa/Desativa a saudação do whatsapp
  • message.teams - Caso o "ack" em "PathSection" esteja habilitado, esse campo define uma mensagem que serã inserida como comentário no evento

Conclusão

0 – Este script é para agilizar a análise e ficar visualmente mais agradável o recebimento dos alarmes;

1 - Faz uso diretamente da API do Telegram (MTProto), diferentemente da maioria (ouso até dizer todos), que usa o servidor HTTP dos BOTs, criando um ponto a mais de falha, além de ter a opção de escolher o remetente, se será um BOT ou uma conta;

2 - Integração API Telegram e WhatsApp: Realiza consulta para trazer informações do objeto, como Tipo (Grupo ou usuário), ID e nome (utilizado pelo script de "teste")

3 - Integração API ZBX (item): verificando se o item é do "tipo gráfico" (inteiro ou fracionário) para montar o gráfico se não for, ele envia somente o texto;

4 - Integração API ZBX (evento): Realiza ACK no evento, e insere um comentário (Pode ser desativado no arquivo de configuração);

5 - Existe opção de "saudação" (Bom dia, Boa tarde, Boa noite... dependendo do horário), juntamente com o nome, no caso do Telegram e "WhatsApp OpenSource", nome da pessoa, canal, ou grupo (Pode ser desativado no arquivo de configuração);

6 - Consegue realizar a criptografia dos campos, onde existem "informações sensíveis", como token do WhatsApp, o ID de conexão do telegram, usuário e senha do email (caso não use SMTP interno).

7 - Além de diversas pequenas configurações que impacta no resultado final, como:
7.1 - Flag para desconsideração do gráfico;
7.2 - Identificação e montagem do gráfico com todos os itens vinculados a trigger;
7.3 - Tratativa da data do evento, quem nunca se perguntou como alterar o padrão americano (2023.01.07) para o brasileiro (07/01/2023), a mensagem ja chega formatada;
7.4 - Tempo de gráfico personalizado...

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.

  • Ao "Marcílio MR TELECOM" (@MarcilioMRTelecom) que dedicou seu tempo para testar e disponibilizar o projeto dd API do WhatsApp OpenSource, nos dando essa nova possibilidade.

Obrigado a todos os envolvidos, tanto pela disponibilidade para fazer os teste, como pela ajuda, confiança e coparticipação nos projetos.




Open Source Agenda is not affiliated with "Graphical Notifications Zabbix" Project. README Source: sansaoipb/Graphical_notifications_Zabbix

Open Source Agenda Badge

Open Source Agenda Rating