zabbix slack連携

Pocket

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

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から確認します。

[astel@test]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
# cd /usr/local/share/zabbix/alertscripts/
# wget https://raw.githubusercontent.com/ericoc/zabbix-slack-alertscript/master/slack.sh
# chmod 755 slack.sh

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

url='CHANGEME'          # example: https://hooks.slack.com/services/QW3R7Y/D34DC0D3/BCADFGabcDEF123

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

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

payload="payload={\"channel\": \"${to}\", \"username\": \"${username}\", \"text\": \"\`\`\`${message}\`\`\`\", \"icon_emoji\": \"${emoji}\"}"

次に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サーバー
コマンド

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

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

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

コメントを残す

メールアドレスが公開されることはありません。