【问题标题】:Zabbix API search for two values in the same fieldZabbix API 在同一字段中搜索两个值
【发布时间】:2014-04-09 21:10:13
【问题描述】:

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

【问题讨论】:

    标签: php api zabbix


    【解决方案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
    }
    

    【讨论】:

    • searchByAny 帮助我使用通配符搜索两种不同的模式。谢谢!
    【解决方案2】:
    {
          hostids: [10309, 10274],
          search: {
            key_: ['system.cpu.load[percpu,avg1]', 'vfs.fs.size[/,pfree]']
          },
          searchByAny: true,
          output: ['name', 'lastvalue', 'units', 'key_']
    }
    

    searchByAny为我工作

    【讨论】:

      【解决方案3】:

      在 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.getgeneral "get" parameter 参考了解更多详情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-20
        • 2013-12-14
        • 2016-07-13
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多