ZabbixからSlackに通知を送る

  • 98
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

方針

  • Slackのincoming hookを利用して、メッセージを送るシェルスクリプトを使う
  • Zabbixに新規にSlackユーザーを作成し、Mediaとして上記スクリプトを登録する
  • slackユーザーを各種通知の通知先に設定されているユーザーグループに追加することで通知を流す

関連リソース

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

を使います。基本的にはこちらのreadme通りに設定します。

実際の作業

Zabbixサーバにスクリプトを置く

まずはZabbixのAlertScriptPathを確認

grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
AlertScriptsPath=/usr/local/share/zabbix/alertscripts

スクリプトをコピーして実行権限をつけておく

cd /usr/local/share/zabbix/alertscripts/
wget https://raw.githubusercontent.com/ericoc/zabbix-slack-alertscript/master/slack.sh
chmod a+x slack.sh

ls -lh /usr/local/share/zabbix/alertscripts/slack.sh
-rwxr-xr-x 1 root root 1.4K Dec 27 13:48 /usr/local/share/zabbix/alertscripts/slack.sh

slack.shの先頭部分の設定を変更

設定項目 設定内容
subdomain hogefuga.slack.comのhogefuga部分を指定
username Slack上に通知するときに使われるユーザー名を指定
channel 通知を送る先のslackチャンネル名を#つきで指定

# Slack sub-domain name (without '.slack.com'), user name, and the channel to send the message to
subdomain='myorgname'
username='Zabbix'
channel='#alerts'

Slack側の設定

https://my.slack.com/services/new/incoming-webhook
からincoming web hookを作成し、"Your Unique Webhook URL"の"token="以下を確認しておきます。

Your Unique Webhook URLが
https://hogefuga.slack.com/services/hooks/incoming-webhook?token=HogehogeFugafuga
であれば、tokenは "HogehogeFugafuga"です。

Zabbix側の設定

"Slack"という名前のmedia typeを作成

web interfaceにsuper-administrator権限のあるユーザーでログインします。
"Administration"タブ -> "Media types"タブ -> "Create media type"ボタンを押して作成。

設定項目 設定内容
media type Script
Script name Slack.sh
Enabled チェックを入れる

Saveする。

"Slack"という名前のユーザーを作成

"Administration"タブ -> "Users"タブ
"User groups"のドロップダウンからUsersを選択 -> "Create User"ボタン

"User"タブ

設定項目 設定内容
Alias Slack

"Media"タブ

"Add"ボタンをおして

設定項目 設定内容
Type Slack
Send to token(例:HogehogeFugafuga)
Use if severityのチェック項目 すべてチェック
Status Enabled

Saveする。

Actionの設定

"Configuration"タブ -> "Actions"タブの内容を確認

Name Conditions Operations Status
Report problems to Zabbix administrators Maintenance status not in maintenance Trigger value = PROBLEM Send message to user groups: Zabbix administrators via all media Enabled

といったエントリがあるならば、Zabbix administratorsグループにSlackユーザーを追加してしまえばOKです。
(via all mediaなのでユーザーSlackのSlackメディアから送られる)

ハマりやすいポイント

to be added

おわりに

Slack.shはとても短いスクリプトなので、自分でカスタムもしやすいと思います。


参考