Em caso de dúvida, sugestão ou dificuldade junte-se a nós no Grupo do Telegram Gráfico no Email e Telegram.
Envio de alarmes no ZABBIX pelo Telegram com usuário autenticado com gráficos.
O "How to" foi testado no ZABBIX 2.4 ao 5.0 no Debian 8-10/Ubuntu 14-20 e CentOS 6.x, 7 e 8, caso não utilize estas distros procure os pacotes descritos para sua necessidade.
Instale os pacotes
Debian/Ubuntu
$ sudo apt-get install -y wget dos2unix
CentOS 6.x, 7 e 8
sudo yum install -y epel-release ; sudo yum upgrade ; sudo yum install -y wget dos2unix
Faça o download do script de instalação
cd /tmp ; wget https://raw.githubusercontent.com/sansaoipb/scripts/master/telegram.sh -O telegram.sh ; dos2unix telegram.sh ; sh telegram.sh
OBS:
Existe um local padrão onde fica os scripts, que tem 2 locais possiveis dependendo da forma de instalação do ZABBIX, compilando (/usr/local/share/zabbix/alertscripts/
) ou por pacote (/usr/lib/zabbix/alertscripts/
), respectivamente.
Os arquivos necessários para iniciarmos a configuração estarão na pasta “alertscripts/telegram/”
, e o script telegramGraph.py
na “raiz” onde o zabbix executará.
Ao final da execução do script, ele indicará qual pasta você acessará.
Para iniciarmos a configuração de envio, é preciso logar pela primeira vez manualmente, então entre no diretório “que o script indicou”
e execute o telegram-cli
com o comando abaixo.
sudo -u zabbix ./telegram-cli --rsa-key tg-server.pub --config telegram.config
Após a execução, está mapeado alguns possiveis erros, e para corrigi-los siga os passos:
(homologado pelo amigo "Junior" @amarodefarias)Para o CentOS 8
yum install -y readline-devel compat-openssl10 sudo ln -s /usr/lib64/libreadline.so.7 /usr/lib64/libreadline.so.6 sudo ln -s /usr/lib64/liblua-5.3.so /usr/lib64/liblua-5.1.so sudo ln -s /usr/lib64/libssl.so.1.1.1 /usr/lib64/libssl.so.10 sudo ln -s /usr/lib64/libevent-2.1.so.6 /usr/lib64/libevent-2.0.so.5
(homologado pelo amigo "George Luiz" @George_HPD)Para o Ubuntu 19
sudo wget launchpadlibrarian.net/429633018/libmysqlclient20_5.7.26-1_amd64.deb sudo dpkg -i libmysqlclient20_5.7.26-1_amd64.deb sudo wget http://archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2ubuntu0.16.04.1_amd64.deb sudo dpkg -i libevent-2.0-5_2.0.21-stable-2ubuntu0.16.04.1_amd64.deb
(homologado pelo amigo "Bernardo Lankheet" @bernardolankheet)Para o Debian 10
sudo ln -s /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.6 /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.0.so.5 sudo ln -s /usr/lib/x86_64-linux-gnu/libevent-2.1.so.6 /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(Os dois primeiros homologados pelo amigo "Paulo Aguiar" @aguiarpaulo)Debian 9/Ubuntu 16
Para o erro:
"./telegram-cli --rsa-key tg-server.pub --config telegram.config
./telegram-cli: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./telegram-cli)"
Instale: No Debian 9 este pacote, no Ubuntu 16 este pacote
Para o erro:
"./telegram-cli: error while loading shared libraries: libpython3.4m.so.1.0: cannot open shared object file: No such file or directory"
Execute este comando: sudo ln -s /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0 /usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
Para o erro:
"./telegram-cli: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory"
Execute este comando: sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.5 /lib/x86_64-linux-gnu/libreadline.so.6
Será redirecionado para o console da ferramenta, indicado por um “>”, aguarde até que o texto phone number
apareça, depois digite o número de telefone que está cadastrado no telegram, no formato +552244448888 (prefixo para o Brasil, DDD e número), depois que der “Enter” e receberá um código por SMS e no aplicativo (no desktop, no celular ou na versão web, basta estar logado).
O comando help
lista todos os comandos disponíveis, os comandos contact_list
e dialog_list
carregam sua lista de contatos e as conversas atuais, todos os comandos tem autocomplete usando o TAB.
Para configurarmos o zabbix a enviar mensagens para usuários, grupos ou canais, é necessário executar os comandos user_info
, chat_info
ou channel_info
seguido do nome do contato, do grupo ou do canal conforme está na sua agenda, pegue o “ID”, o “nome de cadastro” ou o "nome de registro" que aparecerá (os nomes também tem autocomplete).
OBS:
1 – Se o escolher utilizar o nome cadastrado, precisa atentar a alguns pontos:
1.1 – Caso tenha sobrenome, é necessário ter underscore (_) entre eles;
1.2 – O nome não pode conter acentos, no caso abaixo, se meu nome estivesse com “~” como “Sansão” não funcionaria e eu precisaria ter cadastrado sem ele (assim como fiz);
Para enviar a mensagem, é preciso usar o ID ou o nome, conforme as estruturas abaixo:
user#129131403
Sansao_Simonton
@sansaoipb
Agora o telegram-cli está configurado para utilizar a sua conta. Podemos sair do console dele digitando safe_quit
(se já tiver aberto em outro momento) ou quit
(caso seja a primeira vez que estiver logando)
1 – O daemon “telegram-cli”
é de SO x64, logo não irá funcionar em SO x86.
Entre no arquivo configScrips.properties
e edite os campos abaixo:
- “url” = 'http://127.0.0.1/zabbix' - URL de acesso ao FRONT com "http://"
- “user” = 'Admin';
- “pass” = 'zabbix';
OBS:
1 – O usuário que você declarar no campo “user” precisa ter permissão no mínimo de leitura no ambiente.
Script para realização do teste:
Script, user#ID, Nome ou user.
Exs:
sudo -u zabbix ./telegramgraph-teste.py user#123456789
ou
sudo -u zabbix ./telegramgraph-teste.py Nome_Sobrenome
ou
sudo -u zabbix ./telegramgraph-teste.py @usuario
OBS:
1 – "user#123456789", "Nome_Sobrenome" ou @usuario são informações fictícias para exemplificar, busque um UserID ou nome de usuário válido em seu ambiente com os comandos já passados para realização do teste;
2 – Se optar por usar o ID, como "user#123456789", “user#” é para quando for usuário, quando for grupo será “chat#”, quando for canal será “channel#” seguido do respectivo ID
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 a "Ação" (em Configuração > Ações).
Zabbix 2.4
Zabbix 3.0 à 4.4
OBS:
Na versão 3.0, é obrigatório a utilização das macros {ALERT.SENDTO}
, {ALERT.SUBJECT}
e {ALERT.MESSAGE}
, em caso de dúvidas, leia a Documentação
Aqui.
A “Mensagem Padrão” na aba “Ação” existe somente com uma “exigência”, 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.
Modelo Mensagem Padrão
{ITEM.NAME}#{EVENT.ID}#{ITEM.ID}#00C800#3600#\n
IP/DNS: {HOST.CONN}\n
Último valor = {ITEM.LASTVALUE}\n
OBS:
”00C800” é a cor da linha (verde) em Hex. sem tralha, e ”3600” é o período do gráfico (1h) em segundo.
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, 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.
3 – Nos nomes de contatos, grupos e canais, espaços são transformados em underscore (_), tralha/jogo da velha (#), arrobas (@) e contatos com mesmo nome tem um “#1” acrescentado ao nome (exemplo: Gnu#1, Gnu#2).