MattermostへのZabbix Alert通知方法

Jul 6, 2019  │  #linux   #mattermost   #zabbix  

環境

手順

1. Incoming Webhook生成

Mattermostのメニューより Integrations > Incoming Webhook > Add Incoming Webhook を選択。
Channelは通知したいチャンネルを選択し、それ以外は任意。

設定後に生成されるURLを控えておく。

2. Zabbixサーバに通知用スクリプトを設置

ここでは https://github.com/jirouette/zabbix-mattermost-alertscript を利用する。

/etc/zabbix/zabbix_server.confAlertScriptsPath= に設定されているパスの直下に、上記スクリプト mattermost.py を設置する。

内容は、以下のように一部書き換える。

また、パーミッションを以下のコマンドで変更する。

sudo chown root:root mattermost.py
sudo chmod 755 mattermost.py

変更後、以下のコマンドでMattermostに通知が飛ぶかを確認する。
#alerts は通知するChannelを指定する。

python mattermost.py '#alerts' PROBLEM 'Oh no! Something is wrong!'

3. Media Type 生成

Zabbixのコンソールより Administration > Media types > Create media type を選択し、以下のように入力。

4. User 生成

Administration > Users より、新規あるいは既存ユーザを選択し、Mediaへ以下の内容を追加する。
ただし、Send toには手順1にて設定したChannelを指定する。

以下、Mediaを設定したユーザ名を Admin とする。

5. Action 追加

Configuration > Actions > Create action より、以下の内容を追加。

Action

Operations

Default subjectは [Problem: {EVENT.NAME} | {HOST.NAME}](https://SERVER_NAME/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}) と指定することで、アラート詳細へのリンクを張ることが可能。

Recovery operations

Default subjectはOperationsと同様。

6. 挙動確認

確実にアラートが発生するTriggerを追加、もしくは適当に yes > /dev/null などを実行して負荷を上げ、アラートを発生させる。

Monitoring > Problems にアラートが表示され、Actions columnに数字が表示されていればZabbix側の設定は成功している。
Mattermostに通知が飛んでいることを確認する。

補足 エラーメッセージ設定時に使用可能なマクロ

{EVENT.NAME}{HOST.NAME} など、アラートに応じて内容を変化させるマクロが存在する。
マクロ一覧は以下を参照。

https://www.zabbix.com/documentation/4.2/manual/appendix/macros/supported_by_location