LoginSignup
36
31

More than 5 years have passed since last update.

Zabbix3.0から追加されたパラメータを使ってSlackに通知を送る

Last updated at Posted at 2016-03-17

*2017/09/16 表示されていない画像を修正

Zabbixのアラート通知はメールで行っていたが、
Slackに部屋を立てて、そこへ通知するように設定することにした。

image

関連リソースに挙げているサイトに従っていろいろやってみたものの
思うように動かないので、結局自分でごにょごにょやった結果をメモしておくことにした。

前提

  • 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

画像のように設定。

280a2f4f-6a0a-9c4a-e9c3-409d4e7825ea.png

Script Parametersについてはこちらを参照。

設定したパラメータがスクリプトの引数として渡される仕組みらしい。次のようになる。

/usr/lib/zabbix/alertscripts/slack.sh {ALERT.SUBJECT} {ALERT.MESSAGE}

ユーザの作成

ユーザslackさんの権限で見える範囲のアラートは、Script:Slackを利用して通知されるように指定する。
70d09945-0279-97ba-fd9b-9032fbac9bc6.png

Send toは今回は使用されないが、必須らしいので適当にChannel名を入れる。

Actionの設定

各ホストでチェックしているTriggerがHitしたときにこのActionが動く。
つまり、何かアラートが発生したにどうするかを指定する。
今回は ユーザ:slackにメッセージを送ると設定する。

0d1a87f7-1590-3190-a27e-98ea6999a35a.png

4dab27e1-457b-ea9e-c3fd-b09efc766be6.png

cf123126-ac69-7136-4f08-2b0968c9a8c5.png

Slack側の設定

zabbix部屋を作る

CHANNELSの右にある + からあっさり作成できるので割愛する

Webhookを設定する

Team Settingから適当に探してポチポチして次のような画面に進み、Webhook URLを取得。

image

/usr/share/zabbix/favicon.icoをpngにして利用。ちょっとボケる。

スクリプトの作成

細かい整形はめんどくさいので、通知されるときに色だけ変わるように指定する。
色はデフォルトで3つ用意されているらしい。
ce980e10-b465-a2f4-18e0-ffd67b27ed9c.png

*2016/03/30 追記
SNMP-TrapのMessageの中に入っている"(ダブルクォート)がJSONと相性悪いらしいので消す行を追加した

*2017/09/14 追記
slack側の変更があったようで使えなくなっていたため、attachmentsの書き方を修正した

scriptの中身はこちら
https://github.com/tdkaoru/zabbix

出来上がった通知が記事の一番上に表示している画像。
channelはWebhook URLで指定済みなので不要だった。
ちなみに、attachmentsを使わずにメッセージを素でだすと、次のようになる。
image

その他

スクリプトの中では{ALERT.MESSAGE}の整形をやっていないので、ActionのDefault Messageを編集して必要な情報だけとるようにする。

*2016/03/23追記

参考までに、編集したものも貼っておく。

DefaultMessage
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}
RecoveryMessage
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}

image

Zabbix 3.0だとOriginal event IDが同じにならない(?)為にRecoveryMessageが使われないようだ。謎

関連リソース

36
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
31