Zabbix アラート通知をSlackで受け取る方法
Zabbixのアラート通知を監視メンバー以外にも受け取ってほしいためSlackと連携させることにしました。
Incoming WebHooksの有効化
slackアプリを起動し、「App」よりIncoming WebHooksを検索します。
すると下記のようにIncoming WebHooksが表示されるので「追加」をクリック
ブラウザへリダイレクトされるので「Slackに追加」をクリック
チャンネル選択でアラートを通知したいチャンネルを選択する。
チャンネルを作成していない場合は、すぐ下の「新しいチャンネルを作成する」から作成できる。
その後、「Incoming Webhooks インテグレーションの追加」をクリック。
WebHooksのURLをコピーしておく
色々とカスタマイズが可能だがひとまずページ最下部の「設定保存」をクリックする。
Zabbixでメディアタイプの追加
次にZabbix管理画面にてメディアタイプでSlackを追加する。
「管理」>「メディアタイプ」から「Slack」をクリック。
名前は任意でOK
パラーメータは全て削除し下記パラメータを追加する。
名前:text
値:{ALERT.MESSAGE}
スクリプトの右端の鉛筆マークをクリックし、直接スクリプトを編集する。
下記スクリプトのreq.PostのURLをコピーしておいたWebHooks URLに置き換える。
編集できれば「適用」をクリック。
var req = new CurlHttpRequest(); req.AddHeader('Content-Type: application/x-www-form-urlencoded'); Zabbix.Log(4, 'webhook request value='+value); req.Post( 'https://hooks.slack.com/services/******************', 'payload='+value ); Zabbix.Log(4, 'response code: '+req.Status()); return JSON.stringify({ 'tags': { 'endpoint': 'slack' } });
最後に「更新」をクリック。
Slack通知テスト
メディアタイプ画面でSlackのテストを行う。
「テスト」をクリックする。
下記のとおりSlackで通知されれば連携OKである。