- discoveryrule.create
- Описание
- Параметры
- Возвращаемые значения
- Примеры
- Создание правила LLD
- Использование фильтра
- Создание правила LLD с путями макросов
- Использование пользовательского фильтра выражения
- Использование пользовательских полей запроса и заголовков
- Создание правила LLD с предобработкой
- Создание правила LLD с переопределениями
- Создание правила LLD со скриптом
- Создание правила LLD с указанным периодом времени для отключения и без удаления
- См. также
- Источник
discoveryrule.create
Описание
object discoveryrule.create(объект/массив lldRules)
Этот метод позволяет создавать новые правила LLD.
Этот метод доступен только пользователям с типом доступа Администратор и Супер-администратор. Разрешения на вызов метода можно отозвать в настройках ролей пользователя. Дополнительную информацию см. в разделе Роли пользователей.
Параметры
(object/array) Правила LLD для создания.
В дополнение к стандартным свойствам правила LLD, метод принимает следующие параметры.
| Параметр | Тип | Описание |
|---|---|---|
| filter | object | Фильтр правила LLD для правила LLD. |
| preprocessing | object/array | Параметры предобработки правила LLD. |
| lld_macro_paths | object/array | Параметры lld_macro_path правила LLD. |
| overrides | object/array | Параметры переопределений правила LLD. |
Возвращаемые значения
(объект) Возвращает объект, который содержит ID созданных правил LLD,
указанных в свойстве itemids. Порядок возвращаемых ID совпадает с порядком
переданных правил LLD.
Примеры
Создание правила LLD
Создайте правило LLD агента Zabbix для обнаружения смонтированных файловых систем. Обнаруженные элементы данных будут обновляться каждые 30 секунд.
{
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"27665"
]
},
"id": 1
}
Использование фильтра
Создайте правило LLD с набором условий для фильтрации результатов. Условия будут сгруппированы с использованием логического оператора "и".
{
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"27665"
]
},
"id": 1
}
Создание правила LLD с путями макросов
{
"jsonrpc": "2.0",
"method": "discoveryrule.create",
"params": {
"name": "Правило LLD с путями макросов LLD",
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"27665"
]
},
"id": 1
}
Использование пользовательского фильтра выражения
Создайте правило LLD с фильтром, который будет использовать пользовательское выражение для вычисления условий. Правило LLD должно обнаруживать только те объекты, значение макроса "{#MACRO1}" у которых соответствует обоим регулярным выражениям "regex1" и "regex2", а значение "{#MACRO2}" соответствует либо "regex3", либо "regex4". Идентификаторы формулы "A", "B", "C" и "D" были выбраны произвольно.
{
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"27665"
]
},
"id": 1
}
Использование пользовательских полей запроса и заголовков
Создайте правило LLD с пользовательскими полями запроса и заголовками.
{
"jsonrpc": "2.0",
"method": "discoveryrule.create",
"params": {
"hostid": "10257",
"interfaceid": "5",
"type": 19,
"name": "API HTTP агент",
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"28336"
]
},
"id": 1
}
Создание правила LLD с предобработкой
{
"jsonrpc": "2.0",
"method": "discoveryrule.create",
"params": {
"name": "Правило обнаружения с предобработкой",
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"44211"
]
},
"id": 1
}
Создание правила LLD с переопределениями
{
"jsonrpc": "2.0",
"method": "discoveryrule.create",
"params": {
"name": "Обнаружение узла сети базы данных",
"key_": "lld.with.overrides",
"hostid": "10001",
"type": 0,
"delay": "60s",
"interfaceid": "1155",
"overrides": [
{
"name": "Обнаружение узла сети 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": "Узел сети базы данных",
"opstatus": {
"status": "0"
},
"optemplate": [
{
"templateid": "10170"
}
],
"optag": [
{
"tag": "database",
"value": "mysql"
}
]
}
]
},
{
"name": "Обнаружение узла сети PostgreSQL",
"step": "2",
"stop": "1",
"filter": {
"evaltype": "0",
"conditions": [
{
"macro": "{#UNIT.NAME}",
"operator": "8",
"value": "^postgresql\\.service$"
}
]
},
"operations": [
{
"operationobject": "3",
"operator": "2",
"value": "Узел сети базы данных",
"opstatus": {
"status": "0"
},
"optemplate": [
{
"templateid": "10263"
}
],
"optag": [
{
"tag": "database",
"value": "postgresql"
}
]
}
]
}
]
},
"id": 1
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"30980"
]
},
"id": 1
}
Создание правила LLD со скриптом
Создайте простой сбор данных с помощью правила LLD со скриптом.
{
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"23865"
]
},
"id": 1
}
Создание правила LLD с указанным периодом времени для отключения и без удаления
Создайте правило LLD с пользовательским периодом времени для отключения сущности после того, как она больше не обнаруживается, с настройкой, при которой она никогда не будет удалена.
{
"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
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"46864"
]
},
"id": 1
}
См. также
Источник
CDiscoveryRule::create() в ui/include/classes/api/services/CDiscoveryRule.php.