Zabbix4.0の新機能の1つとして、HTTPエージェント監視の機能が実装されました。
これは、監視アイテムのタイプの1つとして実装され、Zabbix Serverから指定したURLに対してHTTPリクエストを送付して値を取得するといった機能です。
これまでのZabbixの場合だと、別途HTTPのリクエスト処理を行うスクリプトを作成して外部チェックアイテムで監視したり、Zabbix AgentのUserParameterを用いてZabbix Agentからスクリプトを実行して監視したりといった対応が必要でした。
しかし、4.0からはZabbix Serverが直接HTTPリクエストを呼び出して監視する機能が搭載されています。
さらに、この機能とZabbix3.4以降で実装されている保存前処理のJSONパース、XMLパース機能を組み合わせて活用すると、WebAPIを呼び出して、その応答結果のJSONを取得し、JSONに含まれているとある情報を監視するといったことがZabbixの標準機能だけで完結して実施できます。
試したこと
試しに、Docker Engine APIを呼び出し、特定のコンテナの情報をHTTPエージェント機能を使って取得し、その中からどのImageで稼動しているコンテナなのかの情報を監視結果として取得できるようにします。
HTTPエージェント監視アイテムの登録
タイプをHTTPエージェントと設定し、URLにDocker Engine APIのURLを指定します。
Docker Engine APIの情報は公式ドキュメントを参照してください。
データ型はテキストに指定して、収集されるJSONをそのまま監視結果として保存できるようにしておきます。
依存アイテムの登録
先程のHTTPエージェント監視アイテムで取得されてきたJSONデータを元にその中に含まれるコンテナイメージ名情報を取り出すアイテムです。
このアイテム自体が個別にHTTPリクエストを呼び出して値を取りにいくわけではないのでAPI側に負荷をかけずに収集できるのも良いですね。
設定はこんな感じで行います。タイプを依存アイテムに設定し、マスターアイテムとして先程のHTTPエージェントアイテムを選択します。
あとは、保存前処理設定を以下のように行い、JSONの取得する箇所を指定します。
これで監視が簡単にできます。
便利ですね。