Zabbixのアラートをチャットラックで通知する
zabbixからチャットラックにメッセージを飛ばす方法
中の人に聞いてみてないのでノウハウがあるかもしれませんが、
あるならくれる気がするんで、ないかもしれないのでメモっておきます。
そもそもチャットラックって何?については本家に行ってください。(chatworkじゃないよ。)
一応ですが、タダのユーザ視点なので悪しからず。(中の人ではないです)
各種バージョン
ChatLuck V4.0 R2.0
zabbix_server (Zabbix) 6.0.5
シェルスクリプト
基本的にスクリプトの配置とかそういうのは
いろんな記事を見ればいいと思います。
デフォまま想定なのでその辺割愛して、中身はこんな感じです。
なんでも動くのでシェルスクリプトに必然性はないのですが、そもそも、メッセージそのものを出すくらいしかAPIが無いのでZabbixのアラートを受け取って流し込むだけなので、シェルスクリプトでいいかなと。
今回は特定のルームでbotにしゃべらせるのパターン
#!/bin/sh
TOKEN="bot_token"
URL="https://[server_name]/cgi-bin/chatlksa/chatBot.cgi?"
ROOMID=${1}
MESSAGE=${2}
/usr/bin/curl -X POST $URL -d "action=send_message_to_room&access_token=$TOKEN&room_id=$ROOMID&message=$MESSAGE"
確認するには
sh [shell] [room_id] [text]
とか打って、
{"result":"ok","server_time":"20XX-XX-XXT06:24:46","id":"room_id"}
とかが返ってくればOKです。
メディアタイプ作成
メディアタイプ(管理⇒メディアタイプ)はこんな感じで作りました。
そもそも、メッセージそのものを出すくらいしかAPIが無いので(2回目)、淡泊です。
ひとまず標準のやつを指定しておけば動きます。
ユーザ設定
適当なユーザにメディアをくっつけます。
(ちなみに「chatluck」というユーザを作って設定してます。)
- メディア
- 先ほど作成したメディアタイプを選択
- 送信先
- 表示先のroom_idを入力
アクション
アクション(設定⇒アクション⇒トリガーアクション)を設定します。
名前はなんでもいいし、デフォの「Report problems to Zabbix administrators」あたりを複製してもいいと思います。
ここではchatluckというユーザ単体に対してアクションを設定してます。
(ここでは実行条件は特に指定していません。)
ここでも先ほど作成したメディアタイプを指定しつつ、ユーザを指定⇒単体のユーザを指定します。
動作確認
レポート⇒アクションログから
- 先ほど設定したアクション名のログが確認できて、 送信済 になっていればこんな感じでメッセージがchatluck側に出ます。
まとめ
今回は、どっちかというとzabbix側の設定の話をしています。
まだ未実施なので体感できてないですが、バージョンが上がると、webhookが使えるようになるので、それを試すときにまとめて、chatluck側の設定についてはまとめてみるつもりです。
(特にAPI周りは公式のドキュメントしかないので、公式さんに期待。)
Discussion