ZabbixAPI共通項目
本項は以下ページを意訳したページとなる。
https://www.zabbix.com/documentation/3.0/manual/api/reference_commentary
JSONでは各項目に対して、name: value の形式で指定を行うが、ZabbixAPIで使用する各パラメータについて
少し詳細に記載をする。
item.get(指定アイテム取得)を例に取る。
https://www.zabbix.com/documentation/3.0/manual/api/reference/item/get
上記ページよりJSONを指定するが、ここで各パラメータ(params[]配列の子要素)に指定する内容である。
{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "extend",
"hostids": "10084",
"search": {
"key_": "system"
},
"sortfield": "name"
},
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}
まず留意するのはJSONの書式である「数値」と「文字列」である。
上記例では "id" の値である1のみダブルクォーテーションで括られていない。これは数値で指定していることを示す。
また "hostids" では "10084" を渡しているが、これはダブルクォーテーションで括られているため、文字列を指定していることを示す。
このパラメータが数値指定か文字列指定かなどを表すパラメータタイプはそれぞれAPIで使うmethodによって決められている。
このパラメータタイプは、各APIページのParametesの表に記載してあるType列がそれに該当する。
例えば、item.getのhostidsは String/Arrayであるため文字列指定なのである。
そして各データタイプは以下のとおり
・bool
true または falseを指定する。
尚、アイテムやトリガーの有効/無効はWeb画面上はOn/Offスイッチのようになっているが、ZabbixAPI上はStatusパラメータでIntegerタイプである点に注意。
・flag
こちらもboolのようであるが、nullなどの指定もある。(あまり使ったことないので詳細分かりません)
・integer
整数タイプ。ダブルクォーテーションで括らないようにする点に注意。
・float
浮動小数タイプ。ダブルクォーテーションで括らないようにすれば良いと思うが、使った記憶がないため詳細不明。
・string
文字列タイプ。ダブルクォーテーションで括る。hostidなど数字で構成された文字列に注意。
・text
文字列タイプ。stringとほぼ一緒だが最大文字列長が長い?
・timestamp
UNIXTIMEでのタイプスタンプ。数値で指定する。
・array
配列。他の要素と組み合わせられる。例えばhostidsのString/Arrayであれば文字列を配列で複数指定可能になる。
item.getでhostidsに複数のhostやtemplate(※)を指定すれば、それを一括で取得可能。
Arrayを使用する場合は、その要素を角括弧でJSONの配列形式にしておく必要がある。
・object
よくわかりません。
・query
クエリー式。一部ZabbixAPIではQueryタイプで受け付ける値が指定されているものがあるが、原則は以下の2つ。
extend
指定された内容を詳細展開する。例えばoutputパラメータにextendを指定すると実際のitemidやname、key_を展開して表示する。
またtrigger.getのselectItemsの場合であれば、無指定の場合トリガー条件式のアイテムキー部分がitemidで表示されるが
ここにextendを指定しておくと、item.key_の内容を展開して出力してくれる。
count
指定された内容をカウントした数値を返す。
以下は補足になるが
また、reference_commentaryページの下半分にはCommon "get" methd parametersというGET系のZabbixAPI共通指定可能パラメータがある。
https://www.zabbix.com/documentation/3.0/manual/api/reference_commentary
ここにあるsearchやsearchWildcardsEnabledについてはZabbixAPI使用対象の持っているデータ量に注意して使用することを勧める。
これは内部的にMariaDB(mysql)に対してそのままSQLのSelectクエリとなるが、当然データ量の多い箇所に大量の結果が出るような指定をすれば
DBへの負荷となるからである。
アイテムやトリガーなどはDBキャッシュに乗っている可能性も高いが、ヒストリなどを対象にする場合は適宜limitで5000などある程度の件数に
絞って実行する方が安全である。