3. 2で発行されたアクセストークンを用いてAPIアクセス
認証APIアクセスエラーの例
API実行した結果エラーになる場合の一例
・リクエストパラメータの書式が間違っていた場合
{"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error","data":"Invalid JSON. An error occurred on the server while parsing the JSON text."},"id":null}
・認証に失敗した場合
{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Login name or password is incorrect"},"id":1}
3. 2で発行されたアクセストークンを用いてAPIアクセス
2までの作業でZabbix APIを利用する準備が整いました。あとは、API methodをいろいろ変更してZabbixの操作を行ってください。Zabbix APIで使えるmethodの一覧は公式マニュアルにまとめられています。
ただし、現在公開されているのはZabbix1.8のマニュアルになります。記事執筆時点ではZabbix2.0のAPIマニュアルは公開されていませんでした。2.0版のAPIマニュアルもそのうち公開されるかと思います(Zabbix2.0と1.8で異なる部分については以降の章で解説します)。
→参照:Zabbix1.8公式マニュアル
Zabbix APIを利用した監視結果取得例
Zabbixで監視していて、「障害が発生したという情報を他のツールと連携させたい」といった要望も多いかと思います。そこで、一例として、あるホストにおける「障害」状態のトリガーのデータを取得する方法を紹介します。
具体的には、以下のような状況のトリガーデータを取得してみます。
- ホスト:test-server(ID:10017)
- トリガーステータス:有効
- トリガーの値:障害
送信先URL: http://example.co.jp/zabbix/api_jsonrpc.php (example.co.jp/zabbixの箇所は環境に応じて変更してください)
リクエストパラメータ:
{"auth":"アクセストークン",
"method":"trigger.get",
"id":識別番号,
"params":{"hostids":["10017"],
"output":"extend",
"expandData":1,
"monitored":1,
"filter":{"status":0,
"value":1
}
},
"jsonrpc":"2.0"
}
リクエストヘッダ: "Content-Type:application/json-rpc"
リクエストメソッド:GET
上記のリクエストの、パラメータの内容を説明します(詳細はマニュアル参照※3)。
| パラメータ名 | 説明 |
|---|---|
| hostids | 特定のホストのトリガー結果を取得する場合に設定。 設定なしの場合は全ホストの情報取得。 |
| output | 結果の出力形式を指定。 shotrenを設定すると最低限の情報のみ取得。 |
| expandData | 取得したトリガーに紐付くホストなどの追加情報を取得。 指定なしの場合、レスポンス結果にホスト情報等が含まない。 |
| monitored | トリガーが現在監視が有効なアイテムのトリガーかどうかを指定。 |
| filter | 取得結果をフィルタリングするための設定。 json形式の値を取り、複数項目の設定が可能。 |
| status | トリガーステータスを指定。 0の場合はトリガーが有効なものを取得。 |
| value | トリガーの値を指定。 1の場合は「障害」の状態のものを取得。 |
このようなリクエストを送ると、以下の値が取得でき、障害の発生時刻や、発生した障害の説明の情報が取得可能になります。
{"jsonrpc":"2.0",
"result":
[{"hosts":[{"hostid":"10017"}],
"triggerid":"12787",
"expression":"{11876}=0",
"description":"Agent is unavailable on {HOST.NAME}",
"url":"",
"status":"0",
"value":"1",
"priority":"4",
"lastchange":"1334293245",
"comments":"",
"error":"",
"templateid":"10047",
"type":"0",
"value_flags":"0",
"flags":"0",
"hostid":"10017",
"hostname":" test-server ",
"host":" test-server "}],
"id":1
}
結果中のlastchangeという項目は、最後に値が変わった時刻(障害が発生した時刻)の情報です。lastchangeはunixtime形式で扱われているため、人が読めるようにするにはlocaltimeに変換するなどの処理が必要です。インターネット上には変換ツール等公開されているのでご活用ください※4。
ここではtrigger.getメソッドの例を紹介しましたが、その他のメソッドに関しても同様の方法でAPIアクセスすることが可能です。リクエストパラメータに何が指定できるのかについては、method毎に異なるため、マニュアルを参考に設定してください。
【参照URL】
- この記事のキーワード