更新

描述

object discoveryrule.update(object/array lldRules)

此方法更新已存在的LLD规则。

此方法只有 Admin(管理员)Super admin(超级管理员) 用户可用。可以在用户角色设置中撤销调用该方法的权限。更多信息请查看用户角色

参数

(object/array) 要更新的LLD规则属性。

必须为每个LLD规则定义itemid属性,所有其他属性都是可选的。只有传递的属性会被更新,其他属性将保持不变。

除了标准LLD规则属性,该方法还接受以下参数。

参数 类型 描述
filter object 替换当前过滤的LLD规则过滤
preprocessing array 替换现有预处理选项的LLD规则预处理选项。
lld_macro_paths array 替换现有lld_macro_path选项的LLD规则lld_macro_path选项。
overrides array 替换现有覆盖选项的LLD规则覆盖选项。

返回值

(object) 返回一个对象,其中包含 itemids 属性下更新的 LLD 规则的 ID。

示例

LLD 规则添加过滤器

添加一个过滤器,以便 {#FSTYPE} 宏的内容与 @File systems for discovery 正则表达式匹配。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.update",
           "params": {
               "itemid": "22450",
               "filter": {
                   "evaltype": 1,
                   "conditions": [
                       {
                           "macro": "{#FSTYPE}",
                           "value": "@File systems for discovery"
                       }
                   ]
               }
           },
           "auth": "038e1d7b1735c6a5436ee9eae095879e",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": {
               "itemids": [
                   "22450"
               ]
           },
           "id": 1
       }

添加LLD宏路径

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.update",
           "params": {
               "itemid": "22450",
               "lld_macro_paths": [
                   {
                       "lld_macro": "{#MACRO1}",
                       "path": "$.json.path"
                   }
               ]
           },
           "auth": "038e1d7b1735c6a5436ee9eae095879e",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": {
               "itemids": [
                   "22450"
               ]
           },
           "id": 1
       }

禁止 trapping

禁止自动发现规则trapping。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.update",
           "params": {
               "itemid": "28336",
               "allow_traps": "0"
           },
           "id": 36,
           "auth": "d678e0b85688ce578ff061bd29a20d3b"
       }

响应:

{
           "jsonrpc": "2.0",
           "result": {
               "itemids": [
                   "28336"
               ]
           },
           "id": 36
       }

更新LLD规则预处理选项

使用预处理规则“JSONPath”更新LLD规则。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.update",
           "params": {
               "itemid": "44211",
               "preprocessing": [
                   {
                       "type": "12",
                       "params": "$.path.to.json",
                       "error_handler": "2",
                       "error_handler_params": "5"
                   }
               ]
           },
           "auth": "700ca65537074ec963db7efabda78259",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": {
               "itemids": [
                   "44211"
               ]
           },
           "id": 1
       }

更新LLD规则脚本

使用不同的脚本更新 LLD 规则脚本,并删除之前脚本使用的不必要参数。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.update",
           "params": {
               "itemid": "23865",
               "parameters": [],
               "script": "Zabbix.Log(3, 'Log test');\nreturn 1;"
           },
           "auth": "700ca65537074ec963db7efabda78259",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": {
               "itemids": [
                   "23865"
               ]
           },
           "id": 1
       }

来源

ui/include/classes/api/services/CDiscoveryRule.php 中的 CDiscoveryRule::update()。