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}]
}