*2017/09/16 表示されていない画像を修正
Zabbixのアラート通知はメールで行っていたが、
Slackに部屋を立てて、そこへ通知するように設定することにした。
関連リソースに挙げているサイトに従っていろいろやってみたものの
思うように動かないので、結局自分でごにょごにょやった結果をメモしておくことにした。
前提
- CentOS Linux release 7.2.1511
- Zabbix 3.01
手順
アラートスクリプトの置き場所を確認する
[root@jumps alertscripts]# grep AlertScripts /etc/zabbix/zabbix_server.conf
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
Zabbixがスクリプトを利用してアラートを通知するように設定する
Media Types
画像のように設定。
Script Parametersについてはこちらを参照。
設定したパラメータがスクリプトの引数として渡される仕組みらしい。次のようになる。
/usr/lib/zabbix/alertscripts/slack.sh {ALERT.SUBJECT} {ALERT.MESSAGE}
ユーザの作成
ユーザslackさんの権限で見える範囲のアラートは、Script:Slackを利用して通知されるように指定する。
Send to
は今回は使用されないが、必須らしいので適当にChannel名を入れる。
Actionの設定
各ホストでチェックしているTriggerがHitしたときにこのActionが動く。
つまり、何かアラートが発生したにどうするかを指定する。
今回は ユーザ:slackにメッセージを送ると設定する。
Slack側の設定
zabbix部屋を作る
CHANNELSの右にある + からあっさり作成できるので割愛する
Webhookを設定する
Team Settingから適当に探してポチポチして次のような画面に進み、Webhook URLを取得。
/usr/share/zabbix/favicon.ico
をpngにして利用。ちょっとボケる。
スクリプトの作成
細かい整形はめんどくさいので、通知されるときに色だけ変わるように指定する。
色はデフォルトで3つ用意されているらしい。
*2016/03/30 追記
SNMP-TrapのMessageの中に入っている"(ダブルクォート)がJSONと相性悪いらしいので消す行を追加した
*2017/09/14 追記
slack側の変更があったようで使えなくなっていたため、attachmentsの書き方を修正した
scriptの中身はこちら
https://github.com/tdkaoru/zabbix
出来上がった通知が記事の一番上に表示している画像。
channel
はWebhook URLで指定済みなので不要だった。
ちなみに、attachments
を使わずにメッセージを素でだすと、次のようになる。
#その他
スクリプトの中では{ALERT.MESSAGE}
の整形をやっていないので、ActionのDefault Message
を編集して必要な情報だけとるようにする。
*2016/03/23追記
参考までに、編集したものも貼っておく。
Date: {EVENT.DATE} {EVENT.TIME}
Description: {TRIGGER.NAME}
Hostname: {HOST.NAME1}
IP address: {HOST.IP1}
Severity: {TRIGGER.SEVERITY}
Item values: {ITEM.NAME1}: {ITEM.VALUE1}
Original event ID: {EVENT.ID}
Date: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
Description: {TRIGGER.NAME}
Hostname: {HOST.NAME1}
IP address: {HOST.IP1}
Item values: {ITEM.NAME1}: {ITEM.VALUE1}
Original event ID: {EVENT.ID}
Zabbix 3.0だとOriginal event IDが同じにならない(?)為にRecoveryMessageが使われないようだ。謎