ホストインベントリ情報を含めたAPIによるホスト登録について

お世話になっております。

現在Zabbix2.2.3を利用しており、APIによって各種操作を行っております。
そこで host.create によるホスト登録を行う際に、ホストインベントリを含めて
登録しようとするとうまくいきませんでした。

実際に発行したAPIは以下の通りです。

====
curl -s -XGET -H "Content-Type: application/json-rpc" -d '{
"method": "host.create",
"params": {
"host": "'TestServer'",
"interfaces": [{"type": 2,"ip": "192.168.0.100","dns": "","useip": 1,"port": "161","main": 1}],
"groups": [{"groupid": "94"}],
"templates": [{"templateid": "10121"}],
"inventory": {"name": "TestServer"}
},
"jsonrpc": "2.0","auth": "****","id": "2"
}' http://127.0.0.1/zabbix/api_jsonrpc.php \
| jq -r '.'
====

ただ、上記のAPIでも正常に処理されたかのように、ホストIDが返り値として出力されます。
しかし、ホスト一覧を確認すると登録したホストは存在せず、DB上にも出力されたホストIDは
ありませんでした。

なお、ホストインベントリの設定箇所を除くと正常にホスト登録が行えるため、
その他の箇所でエラーはないと考えられます。

====
curl -s -XGET -H "Content-Type: application/json-rpc" -d '{
"method": "host.create",
"params": {
"host": "'TestServer'",
"interfaces": [{"type": 2,"ip": "192.168.0.100","dns": "","useip": 1,"port": "161","main": 1}],
"groups": [{"groupid": "94"}],
"templates": [{"templateid": "10121"}]
},
"jsonrpc": "2.0","auth": "*****","id": "2"
}' http://127.0.0.1/zabbix/api_jsonrpc.php \
| jq -r '.'
====

設定する際には、以下のURLを参考にしております。
https://www.zabbix.com/documentation/2.2/manual/api/reference/host/create
https://www.zabbix.com/documentation/2.2/manual/api/reference/host/objec...

対処方法などご教示いただけると助かります。

以上、よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー zinten の写真

socio21945さん

以下のバグを踏んでいるのかと。
https://support.zabbix.com/browse/ZBX-9093

2.2.9がまだリリースされていないのでバージョンアップも勧められず…
いまいち良い対処法が浮かばないです。

ユーザー TNK の写真

"host"や"interfaces"の並びで、"inventory_mode"も追加して設
定してみてください。

 "inventory_mode": 0,

この場合、値としては、0(=マニュアル)か1(=自動)になると思い
ます。

zintenさん TNKさん

返信ありがとうございます。

>zintenさん
確かにこのバグの影響かもしれませんね。
2.4.4の環境を構築中なので、そちらでも試してみようと思います。

>TNKさん
"inventory_mode"のプロパティを追加してみましたが、
結果は同じでした。
ホストIDが結果として出力されて一見成功したように見えますが、
実際には登録されていない状況です。

ちなみに、
 "inventory": [{"inventory_mode": 0,"name": "TestServer"}]
として設定を行いました。

ユーザー TNK の写真

ちなみに、
 "inventory": [{"inventory_mode": 0,"name": "TestServer"}]
として設定を行いました。

inventory_modeを指定する場所が異なります。

先にも書かせて頂いた通り、"host"や"interfaces"と同じ並びに
指定してください。

実行例:

curl -i -X POST -H 'Content-type:application/json' -d '{
"method": "host.create",
"params": {
"host": "'TestServer'",
"interfaces": [{"type": 2,"ip": "192.168.0.100","dns": "","useip": 1,"port": "161","main": 1}],
"groups": [{"groupid": "2"}],
"templates": [{"templateid": "10069"}],
"inventory_mode": 0,
"inventory": {"name": "TestServer"}
},
"jsonrpc": "2.0","auth": "***","id": "2"
}' http://localhost/zabbix/api_jsonrpc.php

※id関連は提示頂いた情報から一部変更しています

TNKさま

大変失礼いたしました。

"inventory_mode": 0,
"inventory": {"name": "TestServer"}

で再度確認しましたが、結果は変わらずでした。。

ユーザー TNK の写真

そうすると、利用されているバージョンの問題かもしれません。

本来は、zintenさんが書かれている通り、不具合として修正される
べきですが、Zabbix 2.2.7以降であれば、inventory_modeを追加す
ることで登録できることが確認できています。

2.4.4にて確認したところ、意図した通りにAPIでホスト登録できました。

2.4.4の場合、バグ改修されているため、"inventory_mode"を指定しなくても
正常に動作してくれることを確認しました。

2.2.3の方については、2.2.7以降にバージョンアップが必要ということで
今後の検討とさせていただきます。

ありがとうございました。