Zabbix 4.0 からアイテムタイプ(監視方法)に「HTTPエージェント」が追加されました。この HTTPエージェント を使うと、HTTP や HTTPS で接続できる API などから取得したデータを保存することができます。Zabbix3.4まではこのような監視をする場合は、外部スクリプトを使うなど工夫が必要でしたが便利になりましたね。そこで今回は、Zabbix 4.0 の HTTPエージェントの使い方をメモしておきました。
Weather API
今回は、さまざまな気象データをAPIで提供している OpenWeatherMap の Weather API から、東京の天気を HTTPエージェントで取得してみたいと思います。
Weather API は、クエリフィールド「appid」に APIキーを設定し、クエリフィールド「q」に気象情報を取得したい都市名を指定してリクエストを実行すると、下のような気象データを JSON 形式で取得できます。
curl -s "https://api.openweathermap.org/data/2.5/weather?appid=<APIキー>&q=Tokyo" | python -mjson.tool { "base": "stations", "clouds": { "all": 20 }, "cod": 200, "coord": { "lat": 35.68, "lon": 139.76 }, "dt": 1542718800, "id": 1850147, "main": { "humidity": 58, "pressure": 1022, "temp": 281.71, "temp_max": 286.15, "temp_min": 278.15 }, "name": "Tokyo", "sys": { "country": "JP", "id": 7619, "message": 0.0066, "sunrise": 1542662503, "sunset": 1542699069, "type": 1 }, "visibility": 10000, "weather": [ { "description": "few clouds", "icon": "02n", "id": 801, "main": "Clouds" } ], "wind": { "deg": 60, "speed": 4.1 } }
キー weather の main の値「Clouds」が東京の天気です。JSON Path で言うと「$.weather[0].main」になります。この JSON Path は HTTPエージェントの設定でも使いますので、覚えておいてくださいね。
HTTPエージェントの設定
適当なテンプレートもしくはホストを作成して、アイテムをクリックします。
「アイテムの作成」をクリックします。
適当な名前を入力し、タイプ「HTTPエージェント」を選択して一意となるようなキーを入力します。続いて APIのURLを入力し、とクエリフィールドで「appid」と「q」の値を指定します。(次に続きます)
今回は天気名を取得するので、データ型は「テキスト」を選択し、監視間隔を適当に設定します。(さらに続きます)
「保存前処理」タブを選択し、天気名が値となる JSON Path「$.weather[0].main」を入力したら「追加」ボタンをクリックしてアイテム設定を保存します。
以上で HTTPエージェントの設定完了です。
「監視データ」>「概要」で、天気が取得されていることを確認できると思います。
おわりに
サーバーはバッチリ動いてるんだけど、アプリケーションのエラーに気づかずトラブルになったことがここ最近ありました(^^;) HTTPエージェントを活用してサービス監視を強化しておきたいものです。
コメント