Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

获取

描述

integer/array discoveryrule.get(object parameters)

该方法允许根据给定的参数检索 LLD 规则。

此方法对于任何用户可用。可以在用户角色设置中撤销调用该方法的权限。更多信息请查看 用户角色

参数

(object) 定义所需输出的参数。

该方法支持以下参数。

参数 类型 说明
itemids string/array 只返回给定 ID 的 LLD 规则。
groupids string/array 只返回属于给定组中主机的 LLD 规则。
hostids string/array 只返回属于给定主机的 LLD 规则。
inherited boolean 如果设置为 true,则仅返回从模板继承的 LLD 规则。
interfaceids string/array 仅返回使用给定主机接口的 LLD 规则。
monitored boolean 如果设置为 true,则仅返回属于受监控主机的已启用 LLD 规则。
templated boolean 如果设置为 true,则仅返回属于模板的 LLD 规则。
templateids string/array 只返回属于给定模板的 LLD 规则。
selectFilter query 返回一个 filter 属性,其中包含 LLD 规则使用的过滤器的数据。
selectGraphs query 返回具有属于 LLD 规则的图形原型的 graphs 属性。

支持count
selectHostPrototypes query 返回具有属于 LLD 规则的主机原型的 hostPrototypes 属性。

支持count
selectHosts query 返回一个 hosts 属性,其中包含 LLD 规则所属的主机数组。
selectItems query 返回一个 items 属性,其中包含属于 LLD 规则的项目原型。

支持 count
selectTriggers query 返回带有属于 LLD 规则的触发器原型的 triggers 属性。

支持count
selectLLDMacroPaths query 返回一个 lld_macro_paths 属性,其中包含 LLD 宏列表和分配给每个相应宏的值的路径。
selectPreprocessing query 返回带有 LLD 规则预处理选项的 preprocessing 属性。

它具有以下属性:
type - (string) 预处理选项类型:
5 - 正则表达式匹配;
11 - XML XPath;
12 - JSONPath;
15 - 不匹配正则表达式;
16 - 检查 JSON 中的错误;
17 - 检查错误在 XML 中;
20 - 丢弃未更改的心跳;
23 - Prometheus 到 JSON;
24 - CSV 到 JSON;
25 - 替换;
27 - XML 到 JSON。

params - (string) 预处理选项使用的附加参数。多个参数由 LF (\n) 字符分隔。
error_handler - (string) 预处理步骤失败时使用的操作类型:
0 - Zabbix 服务器设置错误消息;<br >1 - 丢弃值;
2 - 设置自定义值;
3 - 设置自定义错误消息。

error_handler_params - (string) 错误处理程序参数。
selectOverrides query 返回一个 lld_rule_overrides 属性,其中包含在原型对象上执行的覆盖过滤器、条件和操作的列表。
filter object 只返回与给定过滤器完全匹配的结果。

接受一个数组,其中键是属性名称,值是单个值或要匹配的值数组。

支持其他过滤器:
host - LLD 规则所属主机的技术名称。
limitSelects integer 限制子选择返回的记录数。

适用于以下子选择:
selctItems
selectGraphs
selectTriggers
sortfield string/array 按给定属性对结果进行排序。

可用值:itemidnamekey_delaytypestatus
countOutput boolean 所有 get 方法通用的这些参数在 参考说明 中有详细描述。
editable boolean
excludeSearch boolean
limit integer
output query
preservekeys boolean
search object
searchByAny boolean
searchWildcardsEnabled boolean
sortorder string/array
startSearch boolean

返回值

(integer/array) 返回任一值:

  • 对象数组;
  • 检索到的对象的计数,如果使用了 countOutput 参数。

示例

检索主机自动发现规则

返回主机"10202"所有自动发现规则。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.get",
           "params": {
               "output": "extend",
               "hostids": "10202"
           },
           "auth": "038e1d7b1735c6a5436ee9eae095879e",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "itemid": "27425",
                   "type": "0",
                   "snmp_oid": "",
                   "hostid": "10202",
                   "name": "Network interface discovery",
                   "key_": "net.if.discovery",
                   "delay": "1h",
                   "state": "0",
                   "status": "0",
                   "trapper_hosts": "",
                   "error": "",
                   "templateid": "22444",
                   "params": "",
                   "ipmi_sensor": "",
                   "authtype": "0",
                   "username": "",
                   "password": "",
                   "publickey": "",
                   "privatekey": "",
                   "interfaceid": "119",
                   "description": "Discovery of network interfaces as defined in global regular expression \"Network interfaces for discovery\".",
                   "lifetime": "30d",
                   "jmx_endpoint": "",
                   "master_itemid": "0",
                   "timeout": "3s",
                   "url": "",
                   "query_fields": [],
                   "posts": "",
                   "status_codes": "200",
                   "follow_redirects": "1",
                   "post_type": "0",
                   "http_proxy": "",
                   "headers": [],
                   "retrieve_mode": "0",
                   "request_method": "0",
                   "ssl_cert_file": "",
                   "ssl_key_file": "",
                   "ssl_key_password": "",
                   "verify_peer": "0",
                   "verify_host": "0",
                   "allow_traps": "0",
                   "parameters": []
               },
               {
                   "itemid": "27426",
                   "type": "0",
                   "snmp_oid": "",
                   "hostid": "10202",
                   "name": "Mounted filesystem discovery",
                   "key_": "vfs.fs.discovery",
                   "delay": "1h",
                   "state": "0",
                   "status": "0",
                   "trapper_hosts": "",
                   "error": "",
                   "templateid": "22450",
                   "params": "",
                   "ipmi_sensor": "",
                   "authtype": "0",
                   "username": "",
                   "password": "",
                   "publickey": "",
                   "privatekey": "",
                   "interfaceid": "119",
                   "description": "Discovery of file systems of different types as defined in global regular expression \"File systems for discovery\".",
                   "lifetime": "30d",
                   "jmx_endpoint": "",
                   "master_itemid": "0",
                   "timeout": "3s",
                   "url": "",
                   "query_fields": [],
                   "posts": "",
                   "status_codes": "200",
                   "follow_redirects": "1",
                   "post_type": "0",
                   "http_proxy": "",
                   "headers": [],
                   "retrieve_mode": "0",
                   "request_method": "0",
                   "ssl_cert_file": "",
                   "ssl_key_file": "",
                   "ssl_key_password": "",
                   "verify_peer": "0",
                   "verify_host": "0",
                   "allow_traps": "0",
                   "parameters": []
               }
           ],
           "id": 1
       }

检索过滤条件

检索 LLD 规则的名称“24681”及其过滤条件。过滤器使用“and”求值类型,因此 formula 属性为空,并自动生成 eval_formula

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.get",
           "params": {
               "output": [
                   "name"
               ],
               "selectFilter": "extend",
               "itemids": ["24681"]
           },
           "auth": "038e1d7b1735c6a5436ee9eae095879e",
           "id": 1
       }

响应:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "itemid": "24681",
                   "name": "Filtered LLD rule",
                   "filter": {
                       "evaltype": "1",
                       "formula": "",
                       "conditions": [
                           {
                               "macro": "{#MACRO1}",
                               "value": "@regex1",
                               "operator": "8",
                               "formulaid": "A"
                           },
                           {
                               "macro": "{#MACRO2}",
                               "value": "@regex2",
                               "operator": "9",
                               "formulaid": "B"
                           },
                           {
                               "macro": "{#MACRO3}",
                               "value": "",
                               "operator": "12",
                               "formulaid": "C"
                           },
                           {
                               "macro": "{#MACRO4}",
                               "value": "",
                               "operator": "13",
                               "formulaid": "D"
                           }
                       ],
                       "eval_formula": "A and B and C and D"
                   }
               }
           ],
           "id": 1
       }

通过 URL 检索 LLD 规则

通过规则 URL 字段值检索主机的 LLD 规则。仅支持为 LLD 规则定义的 URL 字符串的完全匹配。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.get",
           "params": {
               "hostids": "10257",
               "filter": {
                   "type": "19",
                   "url": "http://127.0.0.1/discoverer.php"
               }
           },
           "id": 39,
           "auth": "d678e0b85688ce578ff061bd29a20d3b"
       }

响应:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "itemid": "28336",
                   "type": "19",
                   "snmp_oid": "",
                   "hostid": "10257",
                   "name": "API HTTP agent",
                   "key_": "api_discovery_rule",
                   "delay": "5s",
                   "history": "90d",
                   "trends": "0",
                   "status": "0",
                   "value_type": "4",
                   "trapper_hosts": "",
                   "units": "",
                   "error": "",
                   "logtimefmt": "",
                   "templateid": "0",
                   "valuemapid": "0",
                   "params": "",
                   "ipmi_sensor": "",
                   "authtype": "0",
                   "username": "",
                   "password": "",
                   "publickey": "",
                   "privatekey": "",
                   "flags": "1",
                   "interfaceid": "5",
                   "description": "",
                   "inventory_link": "0",
                   "lifetime": "30d",
                   "state": "0",
                   "jmx_endpoint": "",
                   "master_itemid": "0",
                   "timeout": "3s",
                   "url": "http://127.0.0.1/discoverer.php",
                   "query_fields": [
                       {
                           "mode": "json"
                       },
                       {
                           "elements": "2"
                       }
                   ],
                   "posts": "",
                   "status_codes": "200",
                   "follow_redirects": "1",
                   "post_type": "0",
                   "http_proxy": "",
                   "headers": {
                       "X-Type": "api",
                       "Authorization": "Bearer mF_A.B5f-2.1JcM"
                   },
                   "retrieve_mode": "0",
                   "request_method": "1",
                   "ssl_cert_file": "",
                   "ssl_key_file": "",
                   "ssl_key_password": "",
                   "verify_peer": "0",
                   "verify_host": "0",
                   "allow_traps": "0",
                   "parameters": []
               }
           ],
           "id": 39
       }

使用覆盖检索 LLD 规则

检索具有各种覆盖设置的 LLD 规则。

请求:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.get",
           "params": {
               "output": ["name"],
               "itemids": "30980",
               "selectOverrides": ["name", "step", "stop", "filter", "operations"]
           },
           "id": 39,
           "auth": "d678e0b85688ce578ff061bd29a20d3b"
       }

响应:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "name": "Discover database host"
                   "overrides": [
                       {
                           "name": "Discover MySQL host",
                           "step": "1",
                           "stop": "1",
                           "filter": {
                               "evaltype": "2",
                               "formula": "",
                               "conditions": [
                                   {
                                       "macro": "{#UNIT.NAME}",
                                       "operator": "8",
                                       "value": "^mysqld\\.service$"
                                       "formulaid": "A"
                                   },
                                   {
                                       "macro": "{#UNIT.NAME}",
                                       "operator": "8",
                                       "value": "^mariadb\\.service$"
                                       "formulaid": "B"
                                   }
                               ],
                               "eval_formula": "A or B"
                           },
                           "operations": [
                               {
                                   "operationobject": "3",
                                   "operator": "2",
                                   "value": "Database host",
                                   "opstatus": {
                                       "status": "0"
                                   },
                                   "optag": [
                                       {
                                           "tag": "Database",
                                           "value": "MySQL"
                                       }
                                   ],
                                   "optemplate": [
                                       {
                                           "templateid": "10170"
                                       }
                                   ]
                               }
                           ]
                       },
                       {
                           "name": "Discover PostgreSQL host",
                           "step": "2",
                           "stop": "1",
                           "filter": {
                               "evaltype": "0",
                               "formula": "",
                               "conditions": [
                                   {
                                       "macro": "{#UNIT.NAME}",
                                       "operator": "8",
                                       "value": "^postgresql\\.service$"
                                       "formulaid": "A"
                                   }
                               ],
                               "eval_formula": "A"
                           },
                           "operations": [
                               {
                                   "operationobject": "3",
                                   "operator": "2",
                                   "value": "Database host",
                                   "opstatus": {
                                       "status": "0"
                                   },
                                   "optag": [
                                       {
                                           "tag": "Database",
                                           "value": "PostgreSQL"
                                       }
                                   ],
                                   "optemplate": [
                                       {
                                           "templateid": "10263"
                                       }
                                   ]
                               }
                           ]
                       }
                   ]
               }
           ],
           "id": 39
       }

参见

来源

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