🗨️

Zabbixのアラートをチャットラックで通知する

2022/09/15に公開

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