CentOS8にZabbix4.4サーバを構築してWebhookを実行してみよう! 後編:Webhookメディアタイプ設定方法

インフラエンジニアの竹西@hiromaaa03です。
今回の記事は前回の「CentOS8にZabbix4.4サーバを構築してWebhookを実行してみよう! 前編:CentOS8にZabbix4.4サーバを構築」で構築したzabbixサーバを使ってwebhookの設定をして通知してみようと思います。
GUIポチポチーでほぼ完了できるのでぜひ試してみてくださいね。

webhookメディアタイプ設定方法

webhook連携先の準備

まずは通知する先がないと始まらないので通知先を決定します。
Slackに通知したほうがPV数も稼げるんだろうなと思いつつ、
webhookの検証だけなので今回は以下のwebhookのテスト環境を提供してくれているサイトを使用します。
こういったサイトはありがたいですねぇ~
http://webhook.site/
赤枠で示しているURIをwebhookの通知先に使用しますので控えていてください。

zabbixメディアタイプの作成

[ダッシュボード画面]
画面上部のタブからメディアタイプ設定画面へ遷移します。

管理>メディアタイプ

[メディアタイプ一覧画面]
画面右上のメディアタイプの作成をクリック

[メディアタイプ作成画面]
以下のように設定します。タイプにwebhookが追加されているのが確認できます!!
図に記載していない設定は初期値のまま検証しています。
パラメータの値はzabbixで検知した障害/復旧 内容を通知できるように適宜マクロを設定するのがよいですかね。
スクリプトの編集は入力欄の右にあるペンマークをクリックしてください。

*名前:任意
タイプ:webhook
*スクリプト:後述
パラメータ:通知内容を記載

[スクリプト記述画面]
スクリプトの中身はこちらを参考にさせていただきました。
https://www.zabbix.com/documentation/4.4/manual/config/notifications/media/webhook

記述するスクリプトは現在JavaScriptのみなのでご注意ください。
私はJavaScriptわからないマンなのでcurlコマンドの記述で終わりたかったのは内緒です。。

・JavaScript内容

req.Postに記載しているURIは”webhook連携先の準備”で取得したURIに変更してください。
これで設定は完了ですのでメディアタイプ作成画面で保存してください。

var req = new CurlHttpRequest();
req.AddHeader('Content-Type: application/x-www-form-urlencoded');
 
Zabbix.Log(4, 'webhook request value='+value);
 
req.Post('https://webhook.site/13d6babc-7524-4ed3-a76b-db8e421c3ea0',
 'payload='+value
);
 
Zabbix.Log(4, 'response code: '+req.Status());
 
return JSON.stringify({
 'tags': {
 'endpoint': 'webhook_test'
 }
});

 

webhookテスト実行

[メディアタイプ一覧画面]
メディアタイプ一覧画面右側のテストをクリックして、通知テストを実行できます。

[メディアタイプテスト画面]
テストの実行確認画面がポップアップされます。
スクリプトのパラメータ(value)をここで変更することも可能ですが、テストではzabbixマクロに値は代入されません。
パラメータの設定ができれば”テスト”ボタンを押してテストを実行してください。

[webhookテストサイト]
webhookテストサイトを確認するとzabbixからのPOSTを受信しているはずです。
画面下部の受信内容を確認してみると先ほど設定したパラメータが確認できると思います。

さいごに

以上で、zabbixのwebhookの実行テストを行うことが可能です。
zabbixの今までのバージョンではメディアタイプ:スクリプトで別途スクリプトを作成しなくてはwebhookを実行することはできませんでしたので今回の4.4のアップデートでさらに設定が簡易化されたことがわかります。

また、ご紹介させていただいたwebhookのテストサイトを使用すればslackのみならずその他の環境へのテストできるので
ぜひご活用ください。

ありがとうございましたー!


hiromasa.takenishi

AnsibleやコンテナはじめCloud関連の技術を頑張りたいです!

あわせて読みたい