在 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和一般“get”参数参考。