Zabbix Server 3.0系のAPIを実行してみた際、2.2系と比較して変更されている箇所がいくつか見つかったので、ここに記します。
確認したZabbix Serverのバージョンは、3.0.4 と 2.2.9 と 1.8.15 です。
バージョン情報APIやログインAPIでリクエストに認証情報を含めてはいけなくなった
Zabbix APIを実行するには認証情報のトークンをリクエストのJSONの auth フィールドに含める必要がありますが、次の2つのAPIは認証情報がなくても実行できます。
- apiinfo.version
- user.login
これらのAPIを実行する際、これまでは認証情報が含まれていても問題なく実行できていましたが、3.0系ではエラーを返すようになりました。
実際、APIのドキュメントページには次のように書かれていました。
This method is available to unauthenticated users and must be called without the auth parameter in the JSON-RPC request.
ホスト削除APIのパラメータ指定が変わった
ホスト削除API (host.delete) のリクエストにおいて、これまでは削除するホストIDを次のように指定できていました。
{
"method" : "host.delete",
"params" : [
{
"hostid" : "10001"
},
{
"hostid" : "10002"
}
]
}
3.0系では次のように指定しなければならなくなりました。
{
"method" : "host.delete",
"params" : [ "10001", "10002" ]
}
もともと、1.8系では前者の指定が必要で、2.2系では前者と後者とどちらの指定でも良かったのですが、3.0系では後者だけになったということですね。
アイテム取得APIの呼び出し方によってはレスポンスが少なくなった
アイテム取得API (host.get) のリクエストでアプリケーション名 (appilication) を指定した場合、これまではレスポンスにもアプリケーション名のフィールドが含まれていましたが、3.0系では含まれなくなりました。
もともと、アプリケーション名を指定しなければレスポンスにも含まれなかったわけですし、アプリケーション情報を取得するためのパラメータが用意されていますので、これまでの動作がイマイチだったとも言えますね。
アイテム削除APIのレスポンスのデータ型が変わった
アイテム削除API (item.delete) のレスポンスには、これまでは削除されたアイテムIDが文字列型として含まれていました。
{
"result" : {
"itemids" : [ "20001", "20002" ]
}
}
それが3.0系では数値型として返すようになりました。
{
"result" : {
"itemids" : [ 20001, 20002 ]
}
}
3.0系のドキュメントページに記載されているサンプルのレスポンスでは文字列型になっており、他のAPIではIDを文字列として扱っていますので、おそらくこの変更はバグのように思えます。
以前もこんなことがあったような…。
テーマ名が変わった
ユーザ作成API (user.create) やユーザ更新API (user.update) のリクエストでは、ドキュメントページに記載はありませんが、画面のテーマを指定できます。
そのテーマ名が3.0系でまたまた変わりました。
- 1.8系 : default.css , css_ob.css , css_bb.css
- 2.2系 : default , originalblue , darkblue , darkorange , classic
- 3.0系 : default , blue-theme , dark-theme
テーマ情報は graph_theme テーブルに入っていますので、そちらで確認できます。
その他
情報取得系のAPIではレスポンスに含まれるフィールドが増えており、書ききれないので省略します…。
残念なことに、Zabbix APIのドキュメントページは今も昔も完全ではないので、実行しながら確認しましょう。