2

我正在使用 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_

4

3 回答 3

3

我最近也遇到这个问题。我是这样弄的。没关系!

{
        "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
}
于 2015-11-26T03:31:02.117 回答
3
{
      hostids: [10309, 10274],
      search: {
        key_: ['system.cpu.load[percpu,avg1]', 'vfs.fs.size[/,pfree]']
      },
      searchByAny: true,
      output: ['name', 'lastvalue', 'units', 'key_']
}

searchByAny为我工作

于 2019-05-09T07:28:36.963 回答
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 搜索多个确切的键,您需要使用“过滤器”字段并将其传递给带有值的数组,如下所示:

{
    "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”参数参考。

于 2014-04-10T06:41:34.443 回答