sansaoipb / Telegram Graph Authenticated_perl
Programming Languages
Doações
|
|
|
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:
1.1aDebian 8 e 9/Ubuntu 14 e 16
$ 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
1.1bCentOS 6.x e 7
sudo yum install -y epel-release1.2b
sudo yum -y update1.3b
sudo yum install -y perl-CPAN openssl098e.x86_64 python34-libs libconfig-devel readline-devel libevent-devel lua-devel python-devel unzip git make1.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 cpan2.2
cpan[1]> install WWW::Mechanize JSON::RPC::Client2.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:
(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 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);
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).