Zabbix APIを使ってWeb監視設定を登録してみる
Zabbix公式APIマニュアルには、Zabbix APIの使い方として、Web監視設定情報を取得したり、追加登録する方法が載っていません。
しかし、ソースコードを見ると、CWebCheck.phpというのが存在していて、どうやらAPIで叩けるようです。
ということで、Zabbix APIを使ってWeb監視設定の取得と追加登録を実施してみます。
公式に提供されている機能ではないので、以下解説する内容は参考程度に留めて下さい。
以下、Zabbix2.0.3で動作確認済みです。
別のバージョンでは動かないかもしれません。
webcheck.getによるWeb監視設定情報取得
Web監視関連のAPIはwebcheck.xxxという形のメソッドで実行できます。
監視設定を取得する場合にはwebcheck.getです。
取得する際のパラメータ情報は次の通りです。
パラメータには次の値を設定します。
{"output":"extend"}
これにより、Web監視のシナリオの情報が詳細に取得できます。
実際にcurlコマンドを使って実行した結果はこちら。
curl -X POST -H "Content-Type:application/json-rpc" -d '{"auth":"認証トークン","method":"webcheck.get","id":1,"params":{"output":"extend"},"jsonrpc":"2.0"}' http://Zabbixサーバホスト名/zabbix/api_jsonrpc.php
取得できるJSONデータ
{"jsonrpc":"2.0", "result": [{"httptestid":"1", "name":"webtest", "applicationid":"454", "nextcheck":"1358985877", "delay":"60", "status":"0", "macros":"", "agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident\/6.0)", "authentication":"0", "http_user":"", "http_password":""}], "id":1}
シナリオの基本設定だけでなく、各ステップの情報も取得したい場合はパラメータを次のように設定します。
{"output":"extend","selectSteps":"extend"}
curlでの実行例
curl -X POST -H "Content-Type:application/json-rpc" -d '{"auth":"認証トークン","method":"webcheck.get","id":1,"params":{"output":"extend","selectSteps":"extend"},"jsonrpc":"2.0"}' http://Zabbixサーバホスト名/zabbix/api_jsonrpc.php
取得できるJSONデータ
{"jsonrpc":"2.0","result": [{"steps": {"1":{"httptestid":"1", "name":"index", "no":"1", "url":"http:\/\/xx.xx.xx.xx\/redmine", "timeout":"15", "posts":"", "required":"hoge", "status_codes":"200", "webstepid":"1" }}, "httptestid":"1", "name":"webtest", "applicationid":"454", "nextcheck":"1358988040", "delay":"60", "status":"0", "macros":"", "agent":"Mozilla\/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident\/6.0)", "authentication":"0", "http_user":"", "http_password":"" }], "id":1}
ホストの情報も一緒に取得したい場合は"selectHosts":"refer"を更にパラメータに追加して下さい。
すると、シナリオが登録されているホストの情報が"hosts":[{"hostid":"10084"}]といった形で追加されます。
webcheck.createによるWeb監視設定情報登録
では、次にWeb監視設定を登録してみます。
登録にはwebcheck.createを利用します。
webcheck.createを利用することでシナリオ情報、ステップ情報全て登録できます。
パラメータには、シナリオの基本情報と、1つ以上のステップ情報を設定します。
※下記に記載した内容以外にも認証情報やPOST内容など必要に応じて追加して下さい
{"name":"test_case1", ←シナリオ名 "delay":60, ←監視間隔 "status":0, ←監視の有効(0)/無効(1)設定 "authentication":"0", ←認証設定の有り(1)/無し(0)設定 "applicationid":454, ←アプリケーションIDの設定 "hostid":10084, ←アイテム登録する対象ホスト指定(ZabbixServerからWeb監視するのであればZabbix ServerのホストIDを指定) "steps":[{ ←ステップ情報設定(配列形式で複数のステップを一括登録可能) "name":"login", ←ステップ名 "no":1, ←ステップ番号(1以上の数字を指定する必要あり) "url":"http://localhost/zabbix", ←監視URL "timeout":10, ←タイムアウト設定 "required":"zabbix", ←要求文字列指定 "status_codes":200}] ←ステータスコード }
この時、注意点としては、applicationidとhostidが正しい組み合わせになっていない場合、シナリオが正しく指定したホストに対して登録されません。実在する組み合わせで設定して下さい。
また、登録時にはシナリオ名で重複チェックがされるため、同一名のシナリオは登録できません。
さらに、同一シナリオ内でステップの名前の重複も許可されていません。
webcheck.updateによるWeb監視設定の変更
既に存在するシナリオにステップを追加したい場合や、既存の設定を変更する場合にはwebcheck.updateを利用します。
パラメータの指定方法はwebcheck.createとほぼ同じです。
一点注意が必要なのは、変更するシナリオのID(httptestid)をパラメータに追加する必要があります。
{"httptestid":2 ←変更したいシナリオのID。create時に自動で割り振られる "name":"test_case1", "delay":60, "status":0, "authentication":"0", "applicationid":454, "hostid":10084, "steps":[{ "name":"login", "no":1, "url":"http://localhost/zabbix", "timeout":10, "required":"zabbix", "status_codes":200}], "steps":[{ ←追加するステップ情報設定 "name":"dashboard", "no":2, ←ステップが連番になるように設定 "url":"http://localhost/zabbix/dashboard", "timeout":10, "required":"zabbix", "status_codes":200}] }