graphitem.getでhostidが取得できない

スクリーンに同一hostからのグラフ全てを張り付けるプログラムを作成しようとしていたのですが、https://www.zabbix.com/documentation/3.0/manual/api/reference/graphitem/get
のリファレンスどおりの項目が取得できずgraphitem.getコマンドを行った際にhostidなど一部の値が取得できませんでした。解決方法を教えてください。
環境 OS:CentOS7 , Zabbix:3.0 , VMware Workstation 14 Player

実行コマンド
curl -X GET -H "Content-Type:application/json-rpc" -d '{"auth":"9f8af75f06b53ea96f934f69bd90ec4b", "method":"graphitem.get", "id":1, "params":{"output":"extend","graphids":"550"}, "jsonrpc":"2.0"}' http://localhost/zabbix/api_jsonrpc.php | jq '.'

実行結果の一部
{
"jsonrpc": "2.0",
"result": [
{
"gitemid": "1825",
"graphid": "550",
"itemid": "23679",
"drawtype": "0",
"sortorder": "0",
"color": "C80000",
"yaxisside": "0",
"calc_fnc": "2",
"type": "2"
},
・・・

コメント表示オプション

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

Graph item オブジェクトには hostid はありませんよ。
https://www.zabbix.com/documentation/3.0/manual/api/reference/graphitem/...
というわけで、マニュアルにある例が間違っているんでしょう(おそらく古いバージョンでの例の使い回し)。

hostid を取りたいなら、itemid から Item オブジェクトを特定し、item.get で hostid を取得する、ということになります。

ただ、同一ホストのグラフを一覧にしたいのであれば、取得の順番を逆にして、
1 まず item.get で hostids に特定のホストの hostid を指定して実行し、
2 得られたアイテムの itemid を配列に入れて、
3 それを graphitem.get の itemids に指定する
とした方が楽にできそうな気がします。

---- 以下、余談 ----
2.2 なら expandData というのがあるみたいなので、試しに 2.2 でやってみると、hostid や host などの項目も取れました(それでもマニュアルの例とは出力が微妙に違いますが)。
https://www.zabbix.com/documentation/2.2/manual/api/reference/graphitem/get

しかし、これは 3.0 から廃止されたようです(理由は不明)。
https://www.zabbix.com/documentation/3.0/manual/api/changes_2.4_-_3.0
https://support.zabbix.com/browse/ZBXNEXT-2724
そして、マニュアルでは 3.0 になっても 2.2(か、それ以前)の例をそのまま使い回しているというだけのことかなと。
#でもこれ、リリースノートには書いてないんですよね・・・。

というわけで、3.0 では上に書いたように二段階で取るしかないのかなと思います。

返信ありがとうございます。
リファレンスどおり動作すると思っていたのですが...そっちのほうが間違っていたとは思いませんでした。
自分の作ろうとしているプログラムへのヒントもありがとうございました。非常に参考になります。

ユーザー heya の写真

一応書いておくと、マニュアルに載っている例(Examples)が違うというだけですよ。
マニュアルに書かれている(Examples 以外の)説明や表の内容が違うということではないです。
#まあ、人間のやることですから、どこかにミスはあるかもしれませんが。