Mais importante. Integração com serviços externos (parte 2)

Continuaremos a lidar com questões mais importantes em relação à integração com serviços externos.


Parte Dois Integração com Zabbix


Na segunda parte da história sobre a integração do mattermost, falaremos sobre o envio de relatórios de acidentes do zabbix para o mattermost. Como resultado de pesquisas na rede,
esse script . O código está escrito em Perl, então você pode precisar instalar o pearl-packages. Antes de prosseguir com a descrição do código (ele é ligeiramente alterado em relação ao original), primeiro, como sempre, faremos algumas configurações.


Mais importante


Para usar o mecanismo de recebimento de mensagens de serviços de terceiros, você precisa adicionar um registro de "ganchos" recebidos. Vamos às configurações "Integrações" -> "Webhooks de entrada" e adicionamos a entrada:


imagem


Depois, copie o link sublinhado para colar no script.


imagem


Zabbix


Na interface de gerenciamento do zabbix, no menu "Administração" -> "Métodos de notificação", adicione um novo método de notificação:


imagem


Onde no script os parâmetros devem ser indicados:


  1. {ALERT.SENDTO}
  2. Link para o webhook mais importante (que foi copiado anteriormente)
  3. Nome de usuário no qual a maioria das mensagens virá
  4. Link para avatar (o arquivo deve estar acessível via http)
  5. {ALERT.MESSAGE}

Em seguida, nas configurações do usuário, adicione um novo método de notificação:


imagem


Onde no campo "Enviar para" é necessário indicar o nome do canal, o mais importante, onde as mensagens serão transmitidas, no nosso caso, é "it" (vale a pena notar que o nome do sistema do canal é usado). Este valor será substituído pela macro {ALERT.SENDTO}, que aparece nos parâmetros do método de notificação recém-criado. {ALERT.MESSAGE} - esta, de fato, será a própria mensagem.


O script original sofreu algumas alterações, devido ao fato de a versão do zabbix usada não enviar a mensagem para json (talvez isso esteja configurado em algum lugar). Portanto, o código teve que ser alterado. O código é fornecido com comentários e não deve causar dificuldades de entendimento.
No servidor em que o Zabbix está instalado, crie o arquivo /usr/lib/zabbix/alertscripts/zabbixMatterBot.pl (eu tenho o Debian e o zabbix instalados no repositório oficial) com o seguinte conteúdo:


#!/usr/bin/perl # https://github.com/drewbeer/zabbix-mattermost-alertscript DrewBeer # passes data in and curls it out via json to mattermost webhooks as attachments. # you can use this as you wish, free as in beer, life is that way. # minify your json before you set it in zabbix, it will make your life easier use warnings; use strict; use JSON; use Data::Dumper; #   , /tmp/zabbix-mattermost.log my $debug = 0; my $logFH; my $zabbixData = (); # debug log the incoming data if ($debug) { open($logFH, '>>', '/var/log/zabbix/zabbix-mattermost.log'); my $dump = Dumper(@ARGV); print $logFH "args:\n$dump\n"; } #    zabbix #  -  ,   mattermost,  , #   ,   my ($channel, $hook, $botName, $iconUrl, $body) = @ARGV; $zabbixData = $body; #   my $payload; $payload = processInternal($zabbixData); #  if ($debug) { print $logFH "final payload: $payload\n"; } #   if ($payload) { sendPayload($payload); } exit; #    #  curl sub sendPayload { my($payload) = @_; my $cmd = qq( curl -s -i -X POST --data-urlencode '$payload' $hook > /dev/null); if ($debug) { $cmd = qq( curl -i -X POST --data-urlencode '$payload' $hook ); } my $cmdOutput = `$cmd`; # final debug if ($debug) { print $logFH "curl:\n$cmd \n$cmdOutput\n"; } } #    zabbix #   json- sub processInternal { my $data = shift; my $attach = (); #    $attach->{'channel'} = $channel; $attach->{'username'} = $botName; $attach->{'icon_url'} = $iconUrl; $attach->{'response_type'} = 'comment'; $attach->{'text'} = $data; if ($debug) { my $body = Dumper $attach; print $logFH "object:\n$body\n"; } my $jsonBody = encode_json $attach; #    my $jsonPayload = qq(payload=$jsonBody); #    return $jsonPayload; } 

Agora, esperamos o gatilho funcionar, ou simulamos um acidente no zabbix e recebemos uma mensagem


imagem


Essa é toda a integração.

Source: https://habr.com/ru/post/pt442404/


All Articles