最重要。 外部サービスとの統合(パート2)

私たちは、外部サービスとの統合に関する重要事項に引き続き取り組みます。







パート2 Zabbixとの統合



マターマストの統合に関するストーリーの第2部では、zabbixからマターモストへの事故報告の送信について説明します。 ネット上で検索した結果、

このスクリプト 。 コードはPerlで記述されているため、pearlパッケージをインストールする必要がある場合があります。 コードの説明に進む前に(元のコードから少し変更されています)、まず、通常どおり、いくつかの設定を行います。







最重要



サードパーティのサービスからメッセージを受信するメカニズムを使用するには、着信「フック」のレコードを追加する必要があります。 [統合]-> [着信Webhooks]設定に移動して、エントリを追加します。







画像







その後、下線付きのリンクをコピーして、スクリプトに貼り付けます。







画像







ザビックス



zabbix管理インターフェイスで、[管理]-> [通知方法]メニューから新しい通知方法を追加します。







画像







スクリプトパラメータのどこを指定する必要があるか:







  1. {ALERT.SENDTO}
  2. 重要なwebhook(以前にコピーされた)へのリンク
  3. メッセージの発信元である重要なユーザー名
  4. アバターへのリンク(ファイルはhttp経由でアクセス可能でなければなりません)
  5. {ALERT.MESSAGE}


次に、ユーザー設定で、新しい通知方法を追加します。







画像







「送信先」フィールドで、最も重要なのはチャネルの名前、メッセージがストリーミングされる場所を示す必要がある場合です。ここでは、「それ」です(チャネルのシステム名が使用されていることに注意してください)。 この値は、新しく作成された通知メソッドのパラメーターに表示される{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で事故をシミュレートしてメッセージを取得します







画像







それがすべての統合です。








All Articles