discoveryrule.create

Descripción

object discoveryrule.create(object/array lldRules)

Este método permite crear nuevas reglas LLD.

Este método solo está disponible para los tipos de usuario Administrador y Superadministrador. Los permisos para llamar al método se pueden revocar en la configuración del rol de usuario. Ver Roles de usuario para más información.

Parámetros

(objeto/matriz) Reglas LLD para crear.

Además de las [propiedades estándar de la regla LLD] (object#lld_rule), el método acepta los siguientes parámetros.

Parámetro Tipo Descripción
filter objeto Filtro de regla LLD para la regla LLD.
preprocessing objeto/matriz Opciones de preprocesamiento de regla LLD.
lld_macro_paths objeto/matriz Opciones de regla LLD lld_macro_path.
overrides objeto/matriz Opciones de los reemplazos de reglas LLD.

Valores de retorno

(objeto) Devuelve un objeto que contiene los ID de las reglas LLD creadas bajo la propiedad "itemids". El orden de los ID devueltos coincide con el orden de las reglas LLD suministradas.

Ejemplos

Creando una regla LLD

Cree una regla LLD del agente Zabbix para descubrir sistemas de archivos montados. Las métricas descubiertas se actualizarán cada 30 segundos.

Solicitud:

{
       "jsonrpc": "2.0",
       "method": "discoveryrule.create",
       "params": {
       "name": "Mounted filesystem discovery",
       "key_": "vfs.fs.discovery",
       "hostid": "10197",
       "type": 0,
       "interfaceid": "112",
       "delay": "30s"
       },
       "id": 1
       }

Respuesta:

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

Usando un filtro

Cree una regla LLD con un conjunto de condiciones para filtrar los resultados. Las condiciones se agruparán utilizando el operador lógico "y" .

Solicitud:

{
       "jsonrpc": "2.0",
       "method": "discoveryrule.create",
       "params": {
       "name": "Filtered LLD rule",
       "key_": "lld",
       "hostid": "10116",
       "type": 0,
       "interfaceid": "13",
       "delay": "30s",
       "filter": {
       "evaltype": 1,
       "conditions": [
       {
       "macro": "{#MACRO1}",
       "value": "@regex1"
       },
       {
       "macro": "{#MACRO2}",
       "value": "@regex2",
       "operator": "9"
       },
       {
       "macro": "{#MACRO3}",
       "value": "",
       "operator": "12"
       },
       {
       "macro": "{#MACRO4}",
       "value": "",
       "operator": "13"
       }
       ]
       }
       },
       "id": 1
       }

Respuesta:

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

Creación de una regla LLD con rutas de macros

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "name": "LLD rule with LLD macro paths",
               "key_": "lld",
               "hostid": "10116",
               "type": 0,
               "interfaceid": "13",
               "delay": "30s",
               "lld_macro_paths": [
                   {
                       "lld_macro": "{#MACRO1}",
                       "path": "$.path.1"
                   },
                   {
                       "lld_macro": "{#MACRO2}",
                       "path": "$.path.2"
                   }
               ]
           },
           "id": 1
       }

Respuesta:

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

Usando un filtro de expresión personalizado

Cree una regla LLD con un filtro que utilizará una expresión personalizada para evaluar las condiciones. La regla LLD sólo debe descubrir objetos en los que el valor de macro "{#MACRO1}" cuyo valor coincide con ambas expresiones regulares "regex1" y "regex2", y el valor de "{#MACRO2}" coincide con cualquiera de los dos "regex3" o "regex4". Los ID de fórmula "A", "B", "C" y "D" han sido elegidos arbitrariamente.

Solicitud:

{
       "jsonrpc": "2.0",
       "method": "discoveryrule.create",
       "params": {
       "name": "Filtered LLD rule",
       "key_": "lld",
       "hostid": "10116",
       "type": 0,
       "interfaceid": "13",
       "delay": "30s",
       "filter": {
       "evaltype": 3,
       "formula": "(A and B) and (C or D)",
       "conditions": [
       {
       "macro": "{#MACRO1}",
       "value": "@regex1",
       "formulaid": "A"
       },
       {
       "macro": "{#MACRO1}",
       "value": "@regex2",
       "formulaid": "B"
       },
       {
       "macro": "{#MACRO2}",
       "value": "@regex3",
       "formulaid": "C"
       },
       {
       "macro": "{#MACRO2}",
       "value": "@regex4",
       "formulaid": "D"
       }
       ]
       }
       },
       "id": 1
       }

Respuesta:

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

Uso de encabezados y campos de consulta personalizados

Cree una regla LLD con encabezados y campos de consulta personalizados.

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "hostid": "10257",
               "interfaceid": "5",
               "type": 19,
               "name": "API HTTP agent",
               "key_": "api_discovery_rule",
               "value_type": 3,
               "delay": "5s",
               "url": "http://127.0.0.1?discoverer.php",
               "query_fields": [
                   {
                       "name": "mode",
                       "value": "json"
                   },
                   {
                       "name": "elements",
                       "value": "2"
                   }
               ],
               "headers": [
                   {
                       "name": "X-Type",
                       "value": "api"
                   },
                   {
                       "name": "Authorization",
                       "value": "Bearer mF_A.B5f-2.1JcM"
                   }
               ],
               "allow_traps": 1,
               "trapper_hosts": "127.0.0.1"
           },
           "id": 1
       }

Respuesta:

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

Creación de una regla LLD con preprocesamiento

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "name": "Discovery rule with preprocessing",
               "key_": "lld.with.preprocessing",
               "hostid": "10001",
               "ruleid": "27665",
               "type": 0,
               "value_type": 3,
               "delay": "60s",
               "interfaceid": "1155",
               "preprocessing": [
                   {
                       "type": 20,
                       "params": "20",
                       "error_handler": 0,
                       "error_handler_params": ""
                   }
               ]
           },
           "id": 1
       }

Respuesta:

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

Creación de una regla LLD con anulaciones

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "name": "Discover database host",
               "key_": "lld.with.overrides",
               "hostid": "10001",
               "type": 0,
               "value_type": 3,
               "delay": "60s",
               "interfaceid": "1155",
               "overrides": [
                   {
                       "name": "Discover MySQL host",
                       "step": "1",
                       "stop": "1",
                       "filter": {
                           "evaltype": "2",
                           "conditions": [
                               {
                                   "macro": "{#UNIT.NAME}",
                                   "operator": "8",
                                   "value": "^mysqld\\.service$"
                               },
                               {
                                   "macro": "{#UNIT.NAME}",
                                   "operator": "8",
                                   "value": "^mariadb\\.service$"
                               }
                           ]
                       },
                       "operations": [
                           {
                               "operationobject": "3",
                               "operator": "2",
                               "value": "Database host",
                               "opstatus": {
                                   "status": "0"
                               },
                               "optemplate": [
                                   {
                                       "templateid": "10170"
                                   }
                               ],
                               "optag": [
                                   {
                                       "tag": "database",
                                       "value": "mysql"
                                   }
                               ]
                           }
                       ]
                   },
                   {
                       "name": "Discover PostgreSQL host",
                       "step": "2",
                       "stop": "1",
                       "filter": {
                           "evaltype": "0",
                           "conditions": [
                               {
                                   "macro": "{#UNIT.NAME}",
                                   "operator": "8",
                                   "value": "^postgresql\\.service$"
                               }
                           ]
                       },
                       "operations": [
                           {
                               "operationobject": "3",
                               "operator": "2",
                               "value": "Database host",
                               "opstatus": {
                                   "status": "0"
                               },
                               "optemplate": [
                                   {
                                       "templateid": "10263"
                                   }
                               ],
                               "optag": [
                                   {
                                       "tag": "database",
                                       "value": "postgresql"
                                   }
                               ]
                           }
                       ]
                   }
               ]
           },
           "id": 1
       }

Respuesta:

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

Crear regla LLD de secuencia de comandos

Cree una recopilación de datos simple utilizando una regla LLD de script.

Request:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "name": "Script example",
               "key_": "custom.script.lldrule",
               "hostid": "12345",
               "type": 21,
               "value_type": 4,
               "params": "var request = new HttpRequest();\nreturn request.post(\"https://postman-echo.com/post\", JSON.parse(value));",
               "parameters": [{
                   "name": "host",
                   "value": "{HOST.CONN}"
               }],
               "timeout": "6s",
               "delay": "30s"
           },
           "id": 1
       }

Respuesta:

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

Crear regla LLD con un período de tiempo específico para deshabilitar y no eliminar

Cree una regla LLD con un período de tiempo personalizado para deshabilitar la entidad después de que ya no se descubre, con la premisa de que nunca será eliminada.

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "discoveryrule.create",
           "params": {
               "name": "lld disable after 1h",
               "key_": "lld.disable",
               "hostid": "10001",
               "type": 2,
               "lifetime_type": 1,
               "enabled_lifetime_type": 0, 
               "enabled_lifetime": "1h"
           },
           "id": 1
       }

Respuesta:

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

Ver también

-LLD rule filter -LLD macro paths -LLD rule preprocessing

Fuente

CDiscoveryRule::create() en ui/include/classes/api/services/CDiscoveryRule.php.