何番煎じか分かりませんが、zabbixからslackへアラートを通知する方法です。
やりたいこと
- zabbixのアラート(障害時、リカバリ時両方)をslackに通知する
- slackの内容だけで分かるようにホスト名、トリガー名、アイテムの値を表示したい
- すぐzabbix-serverの画面に遷移できるようリンクを設定したい
既存の方法
最初にWEBで調べたのですが、大枠としての以下の2パターンが見つかりました。
- MediaTypeにslackを登録してActionのMediaからslackを選んで通知する方法
- Actionのリモートコマンドでslackへ通知できるスクリプトを実行する方法
前者は簡単に導入できたのですが通知内容が貧弱だったので一旦見送り。
先にMackerelのslack通知を見てたのもあって、もうちょっと情報が欲しいと思いました。
それで後者の方法を試したんですが、どうもリカバリ時にリモートコマンドが実行されないようだったのでこちらも断念。
※zabbix-server-2.4.3で試したんですが、これは仕様なんですかね?
設定内容
最終的に前者のMediaTypeを使い、それ用にスクリプト書きました。
Action発火時にトリガー名とかアイテムの値をスクリプトに渡すのに、第三引数にActionの本文の内容が全部はいっていたので、本文に変数({TRIGGER.NAME}とか{ITEM.VALUE1}とか)を設定してスクリプト内でパースしてます。
※なお第一引数はMediaの通知先、第二引数はActionの件名でした。
この実装がいいのかは謎、、、引数じゃなくていい感じに環境変数に入ってくれたらいいんですけどね。
作ったもの
置いておきます。
通知したい内容に合わせてカスタマイズしてお使いください。
https://github.com/bageljp/zabbix-slack