Zabbix API 上的正则表达式?

Regex on Zabbix API?

在花了几个小时阅读 Zabbix Api 的文档后,我还没有找到一种方法来使用多个可能的值来按键 search

因此,使用此代码:

{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
    "output": "extend",
    "hostids": " 10355",
    "search": {
        "key_": "[in_*|out_*]"
     },

"sortfield": "name"
},
"auth": "15729708df1f5936f6ea840ae1b41cb6",
"id": 0
}

我正在尝试获取每个 item 哪个键是 in_<anything> OR out_<anything> 所以,输出将是以下组合所有与接口相关的项目。相反,我得到这个:

{"jsonrpc":"2.0","result":[],"id":0}

我知道可以使用 filter 而不是 search 但是,根据我的阅读,当您需要完全匹配时会使用它,但事实并非如此。

Zabbix API(以及其他地方的过滤)不支持正则表达式。在某些版本中,您可以传递通配符,但这并不能解决您当前的问题。您将不得不执行两个单独的 API 查询。

要回答此处评论中的问题,可以使用 excludeSearch 参数否定搜索 - 有关详细信息,请参阅 API documentation

为此,您需要输入此键 searchWildcardsEnabled

{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
    "output": "extend",
    "hostids": " 10355",
    "searchWildcardsEnabled": "true",
    "search": {
        "key_": "[in_*|out_*]"
     },

"sortfield": "name"
},
"auth": "15729708df1f5936f6ea840ae1b41cb6",
"id": 0
}

我认为您应该考虑使用 searchByAny parameter 来查找符合任何 search 条件的项目。这是您应该尝试的正确 json :

{
    "jsonrpc": "2.0",
    "method": "item.get",
    "params": {
        "output": "extend",
        "hostids": " 10355",
        "searchWildcardsEnabled": "true",
        "search": {
            "key_": [
                "in_*",
                "out_*"
            ]
        },
        "sortfield": "name"
    },
    "auth": "15729708df1f5936f6ea840ae1b41cb6",
    "id": 1
}