Php Zabbix API在同一字段中搜索两个值

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

我用的是Zabbix PHPAPI,我有个问题

如何找到两个值​​在同一领域?例如:

$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_']
}