ZabbixAPI item.update

本項ではアイテムの更新を行うAPIについて記載する。

http://kyou.hatenadiary.jp/entry/2017/12/25/233314
ZabbixAPIを使うメリット で記載した「登録済みトリガーの閾値を一定のルールで置換する場合」に使用する

大半のケースにおいてはZabbixGUI上の「一括更新」でカバーできるものの
テンプレートやホスト横断的に更新する場合に使用すると便利である。
またアイテム名やアイテムキーを対象にはできないため、その場合はitem.updateの出番となる。

http://kyou.hatenadiary.jp/entry/2018/01/01/010131
ZabbixAPIを使う作業環境 で記載した環境のため、json2zabbix.shで使うJSON形式を作成して実行する方式とする。


また、Zabbix公式Docで参照するページは以下2つになる
https://www.zabbix.com/documentation/3.0/manual/api/reference/item/object
https://www.zabbix.com/documentation/3.0/manual/api/reference/item/update

公式Docのアイテム作成JSONのサンプルは以下のとおり
{
"jsonrpc": "2.0",
"method": "item.update",
"params": {
"itemid": "10092",
"status": 0
},
"auth": "700ca65537074ec963db7efabda78259",
"id": 1
}

各パラメータの詳細を記載する。
jsonrpc: これは"2.0"固定

method: "item.update"でアイテム作成を指定する。必須項目。

itemid: 必須項目。更新を行う対象のアイテムIDを指定する。更新したいアイテムIDはitem.get等で事前に把握しておく必要がある。
status: アイテムの有効/無効の状態。ここではサンプルとして指定のアイテムを有効にしている。

auth: ZabbixAPIの認証トークン。必須項目。json2zabbix.shの場合は ##TOKEN## を記載する。

id: ZabbixAPIの実行ID。必須項目。とりあえず1で良い。


アイテムの内容を一斉に更新可能であるものの、ZabbixGUI側でも指定アイテムにチェックを入れて纏めて有効/無効であったり、「一括更新」機能で相当の状況はカバーできるため、出番が多いわけではない。

しかし、item.getで特定条件のアイテムIDを取得してきてテンプレートやホスト横断的に更新をかける場合や
GUI上でもチェックを入れるのがしんどくなる30個超の更新(私の場合・・・であるが)、またアイテム名やアイテムキーの一斉更新で
これを使えると大変便利になる。

itemidのみ指定し、後は更新したいフィールドだけをJSON内で記載する。公式サンプルの場合であれば
アイテムの状態を有効に切り替える以外に、他の内容は更新しない処理となる。