zabbix slack連携

連携する機会があったので連携メモ

incoming hookを使用します。 https://my.slack.com/services/new/incoming-webhook から使用する部屋のincoming hookを作成してYour Unique Webhook URLをメモしておきます。

こんなの https://hooks.slack.com/services/QW3R7Y/D34DC0D3/BCADDASD456

slackはこれで終わり。

次にzabbixサーバでの作業

https://github.com/ericoc/zabbix-slack-alertscript

ZabbixのAlertScriptPathを/etc/zabbix/zabbix_server.confから確認します。

[code lang=text] [astel@test]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf

Option: AlertScriptsPath

AlertScriptsPath=${datadir}/zabbix/alertscripts

AlertScriptsPath=/usr/lib/zabbix/alertscripts [/code]

[code lang=text]

cd /usr/local/share/zabbix/alertscripts/

wget https://raw.githubusercontent.com/ericoc/zabbix-slack-alertscript/master/slack.sh

chmod 755 slack.sh

[/code]

slack.shを自分用に書き換えます。 先ほどメモしたurlをCHANGEMEに書きます。

[code lang=text] url='CHANGEME' # example: https://hooks.slack.com/services/QW3R7Y/D34DC0D3/BCADFGabcDEF123 [/code]

あとはお好みですね。 簡単なスクリプトなので自分用にカスタマイズしやすいと思います。

自分はバックスラッシュ3つで囲みたかったのでこんな感じにしました。

[code lang=text] payload="payload={"channel": "${to}", "username": "${username}", "text": "```${message}```", "icon_emoji": "${emoji}"}" [/code]

次にzabbixでの作業 管理 -> メディアタイプ -> メディアタイプの作成

名前 Slcak タイプ スクリプト スクリプト名 slack.sh

Slackユーザを作る。もしくは既存のユーザにメディアを追加する。 作る場合は簡単に 名前 Slack メディア -> 新規メディア タイプ Slack

残りはデフォ

アクション

アクション 名前 Alert slack デフォルトの件名 zabbix デフォルトのメッセージ {TRIGGER.NAME} {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1} Original event ID: {EVENT.ID}

アクションの実行条件 お好みで 今回は重要なアラートのみ飛ばしたかったのでトリガーの深刻度=致命的な障害にして設定

アクションの実行内容 実行内容のタイプ リモートコマンド ターゲットリスト 現在のホスト タイプ カスタムスクリプト 次で実行 Zabbixサーバー コマンド

[code lang=text] /usr/lib/zabbix/alertscripts/slack.sh "@astel" "{TRIGGER.NAME} {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1} Original event ID: {EVENT.ID}" [/code]

デフォルトのメッセージで書いてるの、結局コマンドの引数でもってくから意味ないかも これで完成です。

部屋に送りたい場合は /usr/lib/zabbix/alertscripts/slack.sh "#hogehoge" "(略)" みたいな感じにしてください。