All Projects → sansaoipb → Telegram Graph Authenticated_perl

sansaoipb / Telegram Graph Authenticated_perl

Programming Languages

perl
6916 projects

Doações

PagSeguro

PayPal

PicPay

Telegram-Graph-authenticated

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, 3.0, 3.2, 3.4, 4.0 e no 4.2 no Debian 8-9/Ubuntu 14-16 e CentOS 6.x e 7, caso não utilize estas distros procure os pacotes descritos para sua necessidade.

Acompanhe no Vídeo:

Requisitos:

0 – Estar logado com o user zabbix

Caso necessário, habilite como o comando abaixo e troque a senha:
sudo usermod -s /bin/bash zabbix ; sudo passwd zabbix

1 – Executar os comandos abaixo de acordo com sua distro:
Ex:

Debian 8 e 9/Ubuntu 14 e 16

1.1a
$ sudo apt-get install -y libreadline-dev libconfig-dev libssl-dev libevent-dev libjansson-dev libpython-dev libpython3-all-dev liblua5.2-0 git unzip make

CentOS 6.x e 7

1.1b
sudo yum install -y epel-release
1.2b
sudo yum -y update
1.3b
sudo yum install -y perl-CPAN openssl098e.x86_64 python34-libs libconfig-devel readline-devel libevent-devel lua-devel python-devel unzip git make
1.4b
sudo ln -s /usr/lib64/liblua-5.1.so /usr/lib64/liblua5.2.so.0 ; sudo ln -s /usr/lib64/libcrypto.so.0.9.8e /usr/lib64/libcrypto.so.1.0.0

2 – Depois faça o download do módulos abaixo:

2.1
$ sudo cpan
2.2
 cpan[1]> install WWW::Mechanize JSON::RPC::Client
2.3
Depois “exit” para sair. 

3 – Faça o download do projeto através do comando:

git clone https://github.com/sansaoipb/Telegram-Graph-authenticated_Perl

Ao final do download execute os comandos abaixo:

Debian/Ubuntu

cd Telegram-Graph-authenticated ; sudo unzip telegram.zip ; sudo rm -rf README.md ; sudo rm -rf telegram.zip ; cd telegram ; sudo rm -rf telegram-cli.CentOS ; sudo chmod +x telegram-cli ; cd ..

CentOS 6.x e 7

cd Telegram-Graph-authenticated ; sudo unzip telegram.zip ; sudo rm -rf README.md ; sudo rm -rf telegram.zip ; cd telegram ; sudo mv telegram-cli.CentOS telegram-cli ; sudo chmod +x telegram-cli ; cd ..

Copie os arquivos para a pasta de scripts do ZABBIX:

sudo cp -R telegram* PASTA_DE_SCRIPT_DO_ZABBIX

OBS:
1 – Localize onde fica a pasta de script e mude a expressão “PASTA_DE_SCRIPT_DO_ZABBIX” no comando acima de copia. a pasta pode estar em 2 locais dependendo da forma que você instalou o zabbix (compilando ou por pacote) “/usr/local/share/zabbix/alertscripts/” ou “/usr/lib/zabbix/alertscripts/”.
Caso prefira mudar o local padrão, você pode apontar uma de sua preferência dentro do “zabbix_server.conf”, edite a linha “AlertScriptsPath=” , descomente-a e aponte o novo local que o front irá executar os scripts e dê um restart no serviço do server (zabbix-server) No meu caso, eu editei para “/etc/zabbix/scripts” e será desta forma que ilustraremos nossos próximos passos.

2 – Vá até a “raiz” (PASTA_DE_SCRIPT_DO_ZABBIX) e execute os comandos abaixo para conceder permissões aos arquivos:

sudo chmod +x *.pl ; sudo chown -R zabbix. telegram*

Dentro do diretório “telegram”, edite o arquivo telegram.config na linha abaixo de acordo com sua estrutura:

config_directory = “/etc/zabbix/scripts/telegram/";

OBS:
Os arquivos necessários estarão em “/etc/zabbix/scripts/telegram/”, e o script telegram.pl na “raiz” onde o zabbix executará, no meu caso como já informei está “/etc/zabbix/scripts/”.

Para iniciarmos a configuração de envio, é preciso logar pela primeira vez manualmente, então entre na pasta de script, que no meu caso é /etc/zabbix/scripts/telegram/” e execute o telegram-cli com o comando abaixo.

./telegram-cli --rsa-key tg-server.pub --config telegram.config

Está mapeado alguns possiveis erros, e para corrigi-los siga os passos:

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 ou grupos, é necessário executar os comandos user_info ou chat_info seguido do nome do contato ou do grupo conforme está na sua agenda, pegue o “ID” ou o “nome” que aparecerá (os nomes de usuários 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

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.
2 – Por limitação da aplicação “telegram-cli”, ainda não é possível enviar mensagem para SUPERGRUPOS, pois não houve atualização depois desta novidade

Edite os parâmetros:

  • “my $server_ip” = 'http://127.0.0.1/zabbix' - URL de acesso ao FRONT com "http://"
  • “my $usuario” = 'Admin';
  • “my $senha” = 'zabbix';
  • “my $script = '/etc/zabbix/scripts/telegram';

OBS:
1 – O usuário que você declarar no campo “my $usuario” precisa ter permissão no mínimo de leitura no ambiente.
2 – Coloque o local da pasta de script do seu ambiente no local do caminho /etc/zabbix/scripts/telegram

Comando para teste

Script para realização do teste:
Script, user#ID ou Nome.
Exs:

./telegram-teste.pl user#123456789

ou

./telegram-teste.pl Nome_Sobrenome

OBS:
1 – "user#123456789" e "Nome_Sobrenome" 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#” seguido do respectivo ID
3 - Caso tenha trocado o template do "Zabbix server", será necessário alterar o campo "my $itemid" (na linha 52) para um itemid válido do seu ambiente.

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 / 3.2



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.

3 – Nos nomes de contatos e grupos, 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).



Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].