最重要的。 与外部服务集成(第2部分)

我们将继续处理与外部服务集成的最重要问题。


第二部分 与Zabbix集成


在有关整合物联网的故事的第二部分中,我们将讨论将事故报告从zabbix发送至物联网。 由于在网上进行搜索,
这个脚本 。 该代码是用Perl编写的,因此您可能需要安装pearl-packages。 在继续进行代码描述之前(与原始代码相比略有变化),首先,我们将像往常一样进行一些设置。


最重要的


要使用从第三方服务接收消息的机制,您需要添加传入“挂钩”的记录。 我们转到设置“集成”->“传入网络钩子”并添加条目:


图片


之后,复制带下划线的链接以粘贴到脚本中。


图片


扎比克斯


在zabbix管理界面中,通过“管理”->“通知方法”菜单,添加新的通知方法:


图片


脚本中应在何处指示参数:


  1. {ALERT.SENDTO}
  2. 链接到最重要的Webhook(之前已复制)
  3. 用户名中最重要的消息来源
  4. 链接到头像(文件必须可通过http访问)
  5. {ALERT.MESSAGE}

然后,在用户设置中,添加新的通知方法:


图片


在“发送到”字段中,您需要在消息流的最重要位置指示通道名称,在我们的示例中,它是“ it”(值得注意的是使用了通道的系统名称)。 该值将替换宏{ALERT.SENDTO},该宏出现在新创建的通知方法的参数中。 {ALERT.MESSAGE}-实际上,这将是消息本身。


原始脚本进行了一些更改,这是由于所使用的zabbix版本未将消息发送到json(也许是在某处配置的)。 因此,必须更改代码。 该代码附带注释,不应引起理解上的困难。
在安装Zabbix的服务器上,创建文件/usr/lib/zabbix/alertscripts/zabbixMatterBot.pl (我从官方存储库安装了Debian和zabbix),其内容如下:


#!/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; } 

现在,我们要么等待触发器起作用,要么我们在zabbix中模拟一次事故,然后得到一条消息


图片


这就是所有的集成。

Source: https://habr.com/ru/post/zh-CN442404/


All Articles