在 PHP 中,如果您创建指定多个相同键的关联数组,则仅使用最后一个。在您的示例中,['key_' => 'system.cpu.util', 'key_' => 'system.cpu.util[all]'] 创建与 ['key_' => 'system.cpu.util[all]'] 相同的数组。所以问题之一是没有正确使用 PHP 语法。
但是,如果您直接在 JSON 中格式化请求,也会发生同样的情况。例如,如果您按如下方式指定请求的“params”字段,它还将使用您指定的“key_”的最后一个值(示例中为“system.cpu.util[,iowait]”),因为JSON 对象也不能有重复的键:
{
"output": "extend",
"hostids": "10001",
"search": {
"key_": "system.cpu.util[,user]",
"key_": "system.cpu.util[,system]",
"key_": "system.cpu.util[,iowait]"
}
}
回答您真正的问题时,应该使用“过滤器”来搜索准确的值,并使用“搜索”来搜索不准确的值。因此,为了使用 Zabbix API 搜索多个确切的键,您需要使用“过滤器”字段并将其传递给带有值的数组,如下所示:
{
"output": "extend",
"hostids": "10001",
"filter": {
"key_": [
"system.cpu.util[,user]",
"system.cpu.util[,system]",
"system.cpu.util[,iowait]"
]
}
}
或者,可以使用带有通配符的“搜索”字段,如下所示:
{
"output": "extend",
"hostids": "10001",
"search": {
"key_": "system.cpu.util[,*]"
},
"searchWildcardsEnabled": true
}
这可能会返回比您需要的更多的项目,并且您必须在客户端进行进一步的过滤。
请参阅item.get 和general "get" parameter 参考了解更多详情。