Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

discoveryrule.create

Descrição

object discoveryrule.create(object/array lldRules)

Este método permite criar novas regras de LLD.

Este método está disponível apenas para os tipos de usuário Admin e Super admin. As permissões para chamar o método podem ser revogadas nas configurações de função do usuário. Veja Funções de usuário para mais informações.

Parâmetros

(object/array) Regras de LLD a serem criadas.

Além das propriedades padrão da regra de LLD, o método aceita os seguintes parâmetros.

Parâmetro Tipo Descrição
filter object Filtro da regra de LLD para a regra de LLD.
preprocessing object/array Opções de pré-processamento da regra de LLD.
lld_macro_paths object/array Opções de lld_macro_path da regra de LLD.
overrides object/array Opções de substituições da regra de LLD.

Valores de retorno

(object) Retorna um objeto contendo os IDs das regras LLD criadas na propriedade itemids. A ordem dos IDs retornados corresponde à ordem das regras LLD passadas.

Exemplos

Criando uma regra LLD

Crie uma regra LLD do agent Zabbix para descobrir sistemas de arquivos montados. Os items descobertos serão atualizados a cada 30 segundos.

Requisição:

{  "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 }

Resposta:

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

Usando um filtro

Crie uma regra LLD com um conjunto de condições para filtrar os resultados. As condições serão agrupadas usando o operador lógico "and".

Requisição:

{  "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 }

Resposta:

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

Criando uma regra LLD com caminhos de macro

Requisição:

{  "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 }

Resposta:

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

Usando um filtro de expressão personalizada

Crie uma regra de LLD com um filtro que usará uma expressão personalizada para avaliar as condições. A regra de LLD deve descobrir apenas objetos cujo valor da macro "{#MACRO1}" corresponda tanto à expressão regular "regex1" quanto à "regex2", e o valor de "{#MACRO2}" corresponda a "regex3" ou "regex4". Os IDs de fórmula "A", "B", "C" e "D" foram escolhidos arbitrariamente.

Requisição:

{  "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 }

Resposta:

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

Usando campos de consulta personalizados e cabeçalhos

Crie uma regra de LLD com campos de consulta personalizados e cabeçalhos.

Requisição:

{  "jsonrpc": "2.0",  "method": "discoveryrule.create",  "params": {  "hostid": "10257",  "interfaceid": "5",  "type": 19,  "name": "API HTTP agent",  "key_": "api_discovery_rule",  "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 }

Resposta:

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

Criando uma regra LLD com pré-processamento

Requisição:

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

Resposta:

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

Criando uma regra LLD com substituições

Requisição:

{  "jsonrpc": "2.0",  "method": "discoveryrule.create",  "params": {  "name": "Descobrir host de banco de dados",  "key_": "lld.with.overrides",  "hostid": "10001",  "type": 0,  "delay": "60s",  "interfaceid": "1155",  "overrides": [  {  "name": "Descobrir host MySQL",  "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": "Host de banco de dados",  "opstatus": {  "status": "0"  },  "optemplate": [  {  "templateid": "10170"  }  ],  "optag": [  {  "tag": "database",  "value": "mysql"  }  ]  }  ]  },  {  "name": "Descobrir host PostgreSQL",  "step": "2",  "stop": "1",  "filter": {  "evaltype": "0",  "conditions": [  {  "macro": "{#UNIT.NAME}",  "operator": "8",  "value": "^postgresql\\.service$"  }  ]  },  "operations": [  {  "operationobject": "3",  "operator": "2",  "value": "Host de banco de dados",  "opstatus": {  "status": "0"  },  "optemplate": [  {  "templateid": "10263"  }  ],  "optag": [  {  "tag": "database",  "value": "postgresql"  }  ]  }  ]  }  ]  },  "id": 1 }

Resposta:

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

Criar regra de LLD de script

Crie uma coleta de dados simples usando uma regra de LLD de script.

Requisição:

{  "jsonrpc": "2.0",  "method": "discoveryrule.create",  "params": {  "name": "Script example",  "key_": "custom.script.lldrule",  "hostid": "12345",  "type": 21,  "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 }

Resposta:

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

Criar regra de LLD com um período de tempo especificado para desativação e sem exclusão

Crie uma regra de LLD com período de tempo personalizado para desativar a entidade após ela não ser mais descoberta, com a configuração de que ela nunca será excluída.

Requisição:

{  "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 }

Resposta:

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

Veja também

Fonte

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