Skip to content

sansaoipb/Telegram-Graph-authenticated_Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Doações

PagSeguro

PayPal

PicPay

Telegram-Graph-authenticated_Python

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.

Sumário


Requisitos:

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:


Para o CentOS 8

(homologado pelo amigo "Junior" @amarodefarias)
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

Para o Ubuntu 19

(homologado pelo amigo "George Luiz" @George_HPD)
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

Para o Debian 10

(homologado pelo amigo "Bernardo Lankheet" @bernardolankheet)
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

Debian 9/Ubuntu 16

(Os dois primeiros homologados pelo amigo "Paulo Aguiar" @aguiarpaulo)

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

Ex:


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)

OBS IMPORTANTE:

1 – O daemon “telegram-cli” é de SO x64, logo não irá funcionar em SO x86.

Edite os parâmetros:

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.

Comando para teste

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

Configurando o 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 a "Ação" (em Configuração > Ações).

Tipo de Mídia

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.

Configurando o usuário


Criando a Ação:

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.

Imagem da Mensagem na Ação:



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.

Resultado da linha de teste:



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