私たちは、外部サービスとの統合に関する重要事項に引き続き取り組みます。
パート2 Zabbixとの統合
マターマストの統合に関するストーリーの第2部では、zabbixからマターモストへの事故報告の送信について説明します。 ネット上で検索した結果、
このスクリプト 。 コードはPerlで記述されているため、pearlパッケージをインストールする必要がある場合があります。 コードの説明に進む前に(元のコードから少し変更されています)、まず、通常どおり、いくつかの設定を行います。
最重要
サードパーティのサービスからメッセージを受信するメカニズムを使用するには、着信「フック」のレコードを追加する必要があります。 [統合]-> [着信Webhooks]設定に移動して、エントリを追加します。
その後、下線付きのリンクをコピーして、スクリプトに貼り付けます。
ザビックス
zabbix管理インターフェイスで、[管理]-> [通知方法]メニューから新しい通知方法を追加します。
スクリプトパラメータのどこを指定する必要があるか:
- {ALERT.SENDTO}
- 重要なwebhook(以前にコピーされた)へのリンク
- メッセージの発信元である重要なユーザー名
- アバターへのリンク(ファイルはhttp経由でアクセス可能でなければなりません)
- {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で事故をシミュレートしてメッセージを取得します
それがすべての統合です。