integer/array discoveryrule.get(object parameters)
该方法允许根据给定参数检索LLD规则.
此方法可供任何类型的用户使用. 调用该方法的权限可以在用户角色设置中撤销. 更多信息请参阅User roles.
(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 | 返回一个lld-规则过滤器属性,包含LLD规则使用的过滤器数据. |
| selectGraphs | query | 返回一个graphs属性,包含属于LLD规则的图形原型. 支持 count. |
| selectHostPrototypes | query | 返回一个hostPrototypes属性,包含属于LLD规则的主机原型. 支持 count. |
| selectHosts | query | 返回一个hosts属性,包含LLD规则所属主机的array. |
| selectItems | query | 返回一个items属性,包含属于LLD规则的监控项原型. 支持 count. |
| selectTriggers | query | 返回一个triggers属性,包含属于LLD规则的触发器原型. 支持 count. |
| selectLLDMacroPaths | query | 返回一个lld-宏路径属性,包含LLD宏列表及分配给每个宏的值的路径. |
| selectPreprocessing | query | 返回一个lld-规则预处理属性,包含LLD规则预处理选项. |
| selectOverrides | query | 返回一个lld-规则覆盖属性,包含对原型objects执行的覆盖过滤器、条件和操作列表. |
| filter | object | 仅返回完全匹配给定过滤器的结果. 接受一个array,其中键是属性名,值是要匹配的单个值或array值. 支持额外过滤器: host - LLD规则所属主机的技术名称. |
| limitSelects | integer | 限制子查询返回的记录数. 适用于以下子查询: selectItems;selectGraphs;selectTriggers. |
| sortfield | string/array | 按给定属性排序结果. 可能值为: itemid, name, key_, delay, type和status. |
| 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参数时)获取指定主机 ID的所有发现规则.
请求:
{ "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", "status": "0", "trapper_hosts": "", "templateid": "22444", "valuemapid": "0", "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", "uuid": "", "state": "0", "error": "", "parameters": [] }, { "itemid": "27426", "type": "0", "snmp_oid": "", "hostid": "10202", "name": "Mounted filesystem discovery", "key_": "vfs.fs.discovery", "delay": "1h", "status": "0", "trapper_hosts": "", "templateid": "22450", "valuemapid": "0", "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", "uuid": "", "state": "0", "error": "", "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规则。仅支持与LLD规则定义的URL string完全匹配。
请求:
{ "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", "status": "0", "trapper_hosts": "", "templateid": "0", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "interfaceid": "5", "description": "", "lifetime": "30d", "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", "uuid": "", "state": "0", "error": "", "parameters": [] } ], "id": 39 }检索一个包含多种覆盖设置的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 }CDiscoveryRule::get() 位于 ui/include/classes/api/services/CDiscoveryRule.php 文件中。