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

时间:2014-04-09 21:10:13

标签: php api zabbix

我正在使用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]'],
));

我参加了考试但总是考虑最后一个参数key_

3 个答案:

答案 0 :(得分:1)

在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搜索多个精确密钥,您需要使用" 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
}

这可能会返回比你需要的更多的项目,你必须在客户端进行进一步的过滤。

有关详细信息,请参阅item.getgeneral "get" parameter参考。

答案 1 :(得分:1)

我最近也遇到过这个问题。我这样做。没关系!

{
        "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
}

答案 2 :(得分:0)

{
      hostids: [10309, 10274],
      search: {
        key_: ['system.cpu.load[percpu,avg1]', 'vfs.fs.size[/,pfree]']
      },
      searchByAny: true,
      output: ['name', 'lastvalue', 'units', 'key_']
}
  

searchByAny 为我工作