ZabbixからSlackへちょっとリッチな通知をする

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

何番煎じか分かりませんが、zabbixからslackへアラートを通知する方法です。

やりたいこと

  • zabbixのアラート(障害時、リカバリ時両方)をslackに通知する
  • slackの内容だけで分かるようにホスト名、トリガー名、アイテムの値を表示したい
  • すぐzabbix-serverの画面に遷移できるようリンクを設定したい

既存の方法

最初にWEBで調べたのですが、大枠としての以下の2パターンが見つかりました。

前者は簡単に導入できたのですが通知内容が貧弱だったので一旦見送り。
先にMackerelのslack通知を見てたのもあって、もうちょっと情報が欲しいと思いました。

それで後者の方法を試したんですが、どうもリカバリ時にリモートコマンドが実行されないようだったのでこちらも断念。
※zabbix-server-2.4.3で試したんですが、これは仕様なんですかね?

設定内容

最終的に前者のMediaTypeを使い、それ用にスクリプト書きました。
Action発火時にトリガー名とかアイテムの値をスクリプトに渡すのに、第三引数にActionの本文の内容が全部はいっていたので、本文に変数({TRIGGER.NAME}とか{ITEM.VALUE1}とか)を設定してスクリプト内でパースしてます。
※なお第一引数はMediaの通知先、第二引数はActionの件名でした。

この実装がいいのかは謎、、、引数じゃなくていい感じに環境変数に入ってくれたらいいんですけどね。

slackにはこんな感じで通知されます。
zabbix_slack.png

作ったもの

置いておきます。
通知したい内容に合わせてカスタマイズしてお使いください。
https://github.com/bageljp/zabbix-slack