Php Zabbix API在同一字段中搜索两个值
我用的是Zabbix PHPAPI,我有个问题 如何找到两个值在同一领域?例如:Php Zabbix API在同一字段中搜索两个值,php,api,zabbix,Php,Api,Zabbix,我用的是Zabbix PHPAPI,我有个问题 如何找到两个值在同一领域?例如: $items[$h]=$zbx->itemGet(array ( 'filter' => ['hostid' => $arr[$h]['hostid']], 'output' => ['itemid', 'LASTVALUE', 'name', 'key_'] 'search' => ['key_' => 'system.cpu
$items[$h]=$zbx->itemGet(array (
'filter' => ['hostid' => $arr[$h]['hostid']],
'output' => ['itemid', 'LASTVALUE', 'name', 'key_']
'search' => ['key_' => 'system.cpu.util', 'key_'=>'system.cpu.util [all]'],
));
我参加了测试,但它总是考虑PHP中最后一个参数键,如果创建一个指定多个相同键的关联数组,则只使用最后一个键。在您的示例中,
['key\'=>'system.cpu.util','key\'=>'system.cpu.util[all]]
创建的数组与['key\'=>'system.cpu.util[all]]创建的数组相同。所以问题之一是PHP语法没有被正确使用
但是,如果直接用JSON格式化请求,也会发生同样的情况。例如,如果您将请求的“params”字段指定为如下所示,它还将使用您指定的最后一个“key_u2;”值(“示例中的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搜索多个精确键,您需要使用“filter”字段并向其传递一个包含值的数组,如下所示:
{
"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
}
这可能会返回比您需要的更多的项目,您必须在客户端进行进一步的筛选
有关更多详细信息,请参阅和参考。我最近也遇到了这个问题。我是这样做的。没关系
{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "extend",
"hostids": hostid,
"sortfield": "name",
'search': {
'key_': ['system.cpu.util[,user]','system.cpu.util[,system]', 'vm.memory.size'],
},
'searchByAny': True
},
"auth": "something your auth code",
"id": 1
}
searchByAny为我工作
searchByAny
帮助我使用通配符搜索两种不同的模式。谢谢
{
hostids: [10309, 10274],
search: {
key_: ['system.cpu.load[percpu,avg1]', 'vfs.fs.size[/,pfree]']
},
searchByAny: true,
output: ['name', 'lastvalue', 'units', 'key_']
}