いろんな実装があるけど気に入ったものがなかったので作ってみた。
特徴
- グラフ画像をGyazoに送って表示するので、Slackから直接繋がらないZabbixサーバのグラフでも表示できる
- 運用如何ではホスト名が外部に漏れるなど起き得るので、そこは要注意
インストール方法
- Python3.xが入っているマシンで、pipあたりでrequestsをインストール。
-
slack.pyを AlertScriptPath以下(
/usr/lib/zabbix/alertscripts/
など)へ放り込んでchmod +x - zabbixのホスト・ユーザ・パスワードを設定。このユーザでログインして通知時にグラフを取ってきます
- Gyazo APIでトークンを取ってくる
- Applicationを登録したあと、アプリ詳細画面でYour access tokenに書いてあるのがトークン
- Gyazoのトークンをslack.pyのgyazo_tokenに設定
設定方法
メディアにスクリプトを追加
スクリプト引数は「メッセージ」「Incoming-hook URL」「チャンネル名」「ユーザ名」「アイコンemoji」の5つで、メッセージとIncoming-hook URLは必須です。メッセージは{ALERT.MESSAGE}で、Incoming-hook URLはSlackの設定からコピペしてください。チャンネル名は固定文字列(#zabbixとか)とか、{ALERT.SENDTO}1を入れるなど任意です。
メディアを追加した後、ユーザ設定で当該ユーザに追加したメディアでの通知を許可しないとアクション実行時に通知不能でエラー2になります
アクションの設定
メッセージ内容に以下のような設定をします。トリガ条件に使われていて、通知時に表示したい値がある場合はITEM_なんとか系をインクリメントして追加してください。
HOST: {HOST.NAME}
TRIGGER_NAME: {TRIGGER.NAME}
TRIGGER_STATUS: {TRIGGER.STATUS}
TRIGGER_SEVERITY: {TRIGGER.SEVERITY}
ITEM_ID1: {ITEM.ID1}
ITEM_NAME1: {ITEM.NAME1}
ITEM_VALUE1: {ITEM.VALUE1}
ITEM_ID2: {ITEM.ID2}
ITEM_NAME2: {ITEM.NAME2}
ITEM_VALUE2: {ITEM.VALUE2}
ITEM_ID3: {ITEM.ID3}
ITEM_NAME3: {ITEM.NAME3}
ITEM_VALUE3: {ITEM.VALUE3}
ITEM_ID4: {ITEM.ID4}
ITEM_NAME4: {ITEM.NAME4}
ITEM_VALUE4: {ITEM.VALUE4}
MESSAGE_PREFIX: @walkure
MESSAGE_PREFIXを設定すると、通知の先頭に付け加えます。@channelなどお好みで。