Zabbixのアイテムタイプを片っ端から調べていたところ、HTTPエージェントというものが目にとまりました。
Zabbix4.0から追加された新しいアイテムタイプで、APIのレスポンスを監視データとして扱えるようになっています。
今まではスクリプトを作成して、外部チェックのアイテムで取得していたようなデータを
スクリプトなしで取得できるようになったということのようです。
さらにZabbix4.2からは、ディスカバリルールでLLDマクロを指定することができるようになっています。
HTTPエージェントと組み合わせることで、APIのレスポンスを元にディスカバリアイテムを作成することができます。
これらの機能を利用して、Backlogの種別をディスカバリし、種別毎に課題数を取得してみたいと思います。
テンプレートを作成
ディスカバリルール
ここでは種別一覧を取得し、LLDマクロを設定します。
テンプレなので、URLやapiKeyなどの可変部分はマクロにしておきます。
上記のURLでbacklogAPIをリクエストすると、以下のような形で種別一覧を取得することができます。
[
{
"id": 1931,
"projectId": 470,
"name": "タスク",
"color": "#ff3265",
"displayOrder": 0,
"templateSummary": null,
"templateDescription": null
},
以下略
]
この中でアイテムのプロトタイプを作るのに必要そうな情報はid,nameですので、LLDマクロで以下のように設定します。
アイテムのプロトタイプ
アイテムのプロトタイプは次のようにします。
キーがかぶるとディスカバリできてもアイテムが作成されなくなってしまうので、必ずキーにLLDマクロを入れるようにします。
素の状態でどんな値が取得されているのか確認するため、いったんデータ型をテキストにして値取得してみます。
レスポンス本文はbodyの中に入るんですね。
今回は課題数である14の部分だけ取得したいので、データ型を整数にして、保存前処理は次のようにします。
マクロ
最後にマクロを設定します。
値はホスト側で設定するので、テンプレート側は空にしておきます。
データを確認してみる
仮想ホストにテンプレートを適用し、マクロを設定します。
最後に
スクリプトを書く必要がなくなった上に、現在の状況に合わせてアイテムが自動生成できるのはかなり便利だと思いました。
今回例にしたもの以外にも、ユーザー一覧をLLDで取得して、ユーザー毎の担当課題数を取得するとか
目的次第でいろいろな使い方がありそうですね。
参考
https://blog.atgw.jp/archives/3831
https://blog.apar.jp/zabbix/10769/
4.2の環境が手元になかったので、こちらを参考に構築しました。
https://qiita.com/qryuu/items/c3fb49b33068d6cbabf1