認証APIアクセスエラーの例
API実行した結果エラーになる場合の一例
・リクエストパラメータの書式が間違っていた場合
1 | {"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} |
・認証に失敗した場合
1 | {"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)
- トリガーステータス:有効
- トリガーの値:障害
04 | "method":"trigger.get", |
06 | "params":{"hostids":["10017"], |
16 | リクエストヘッダ: "Content-Type:application/json-rpc" |
上記のリクエストの、パラメータの内容を説明します(詳細はマニュアル参照※3)。
パラメータ名 |
説明 |
hostids |
特定のホストのトリガー結果を取得する場合に設定。
設定なしの場合は全ホストの情報取得。 |
output |
結果の出力形式を指定。
shotrenを設定すると最低限の情報のみ取得。 |
expandData |
取得したトリガーに紐付くホストなどの追加情報を取得。
指定なしの場合、レスポンス結果にホスト情報等が含まない。 |
monitored |
トリガーが現在監視が有効なアイテムのトリガーかどうかを指定。 |
filter |
取得結果をフィルタリングするための設定。
json形式の値を取り、複数項目の設定が可能。 |
status |
トリガーステータスを指定。
0の場合はトリガーが有効なものを取得。 |
value |
トリガーの値を指定。
1の場合は「障害」の状態のものを取得。 |
このようなリクエストを送ると、以下の値が取得でき、障害の発生時刻や、発生した障害の説明の情報が取得可能になります。
03 | [{"hosts":[{"hostid":"10017"}], |
05 | "expression":"{11876}=0", |
06 | "description":"Agent is unavailable on {HOST.NAME}", |
11 | "lastchange":"1334293245", |
19 | "hostname":" test-server ", |
20 | "host":" test-server "}], |
結果中のlastchangeという項目は、最後に値が変わった時刻(障害が発生した時刻)の情報です。lastchangeはunixtime形式で扱われているため、人が読めるようにするにはlocaltimeに変換するなどの処理が必要です。インターネット上には変換ツール等公開されているのでご活用ください※4。
ここではtrigger.getメソッドの例を紹介しましたが、その他のメソッドに関しても同様の方法でAPIアクセスすることが可能です。リクエストパラメータに何が指定できるのかについては、method毎に異なるため、マニュアルを参考に設定してください。
【参照URL】