ホストインベントリ情報を含めた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 - 投稿数: 69
socio21945さん
以下のバグを踏んでいるのかと。
https://support.zabbix.com/browse/ZBX-9093
2.2.9がまだリリースされていないのでバージョンアップも勧められず…
いまいち良い対処法が浮かばないです。
TNK - 投稿数: 4671
"host"や"interfaces"の並びで、"inventory_mode"も追加して設
定してみてください。
"inventory_mode": 0,
この場合、値としては、0(=マニュアル)か1(=自動)になると思い
ます。
socio21945 - 投稿数: 53
zintenさん TNKさん
返信ありがとうございます。
>zintenさん
確かにこのバグの影響かもしれませんね。
2.4.4の環境を構築中なので、そちらでも試してみようと思います。
>TNKさん
"inventory_mode"のプロパティを追加してみましたが、
結果は同じでした。
ホストIDが結果として出力されて一見成功したように見えますが、
実際には登録されていない状況です。
ちなみに、
"inventory": [{"inventory_mode": 0,"name": "TestServer"}]
として設定を行いました。
TNK - 投稿数: 4671
inventory_modeを指定する場所が異なります。
先にも書かせて頂いた通り、"host"や"interfaces"と同じ並びに
指定してください。
実行例:
※id関連は提示頂いた情報から一部変更しています
socio21945 - 投稿数: 53
TNKさま
大変失礼いたしました。
"inventory_mode": 0,
"inventory": {"name": "TestServer"}
で再度確認しましたが、結果は変わらずでした。。
TNK - 投稿数: 4671
そうすると、利用されているバージョンの問題かもしれません。
本来は、zintenさんが書かれている通り、不具合として修正される
べきですが、Zabbix 2.2.7以降であれば、inventory_modeを追加す
ることで登録できることが確認できています。
socio21945 - 投稿数: 53
2.4.4にて確認したところ、意図した通りにAPIでホスト登録できました。
2.4.4の場合、バグ改修されているため、"inventory_mode"を指定しなくても
正常に動作してくれることを確認しました。
2.2.3の方については、2.2.7以降にバージョンアップが必要ということで
今後の検討とさせていただきます。
ありがとうございました。