Zabbix API在使用host.get(groupids)时返回错误值

1 投票
1 回答
3637 浏览
提问于 2025-04-18 15:11

我正在尝试使用Zabbix的API来获取某个主机组下的所有主机。看了下文档,发现groupids这个参数应该正好能帮我完成这个任务。文档上说:“只返回属于给定组的主机。”

问题是,不管我指定哪个组,这个功能总是返回所有主机组中的每一台主机。我有一个解决办法,但这需要我费劲地配置每台主机的可见名称。

这里有一个我创建的小例子来重现这个问题。为了说明,我使用的是Zabbix 2.2.3和PyZabbix 0.6。

from pyzabbix import ZabbixAPI

zapi = ZabbixAPI("http://zabbix_URL/zabbix")
zapi.login("username", "password")

for host in zapi.host.get(filter={'groupids': '9'}):
    print host

我不认为这是我语法上的错误(虽然也可能是),因为如果我把参数改成下面这样,它就能返回我请求的确切主机。

for host in zapi.host.get(filter={'hostid': '10084'}):

有没有人知道这是API的一个bug,还是我对groupids这个参数理解错了?

1 个回答

1

看起来“groupids”应该放在“filter”之外。

确实,如果我把下面的内容放在“params”里面,它会像你说的那样返回所有主机:

{
    "output": "extend",
    "filter" : { "groupids": [ "14" ] }
}

但是如果我直接指定“groupids”,Zabbix API只会返回指定组的主机:

{
    "output": "extend",
    "groupids": [ "14" ]
}

撰写回答