5 Прототипы обнаружения
Обзор
Прототипы обнаружения — это вложенные правила обнаружения низкого уровня внутри "родительского" правила обнаружения, которые позволяют создавать многоуровневое обнаружение объектов с их собственными элементами данных, триггерами и т. д. Например, может потребоваться обнаружить все экземпляры баз данных на сервере баз данных, затем обнаружить табличные пространства для каждого экземпляра, а затем обнаружить таблицы для каждого табличного пространства.
Прототипы обнаружения имеют собственные прототипы элементов данных, триггеров, графиков, узлов сети и обнаружения. Вложенный прототип обнаружения будет использовать то же значение JSON, что и родительское правило, если вы укажете тип Nested.
Количество уровней вложенности для прототипов обнаружения не ограничено.
Настройка
Чтобы создать прототип обнаружения:
- Нажмите Прототипы обнаружения в строке существующего правила обнаружения

- Нажмите Создать прототип обнаружения

Поля настройки этой формы являются общими с обычным обнаружением низкого уровня.
Если в открывшейся форме прототипа обнаружения выбрать "Nested" в поле Тип, тогда правила обнаружения (из прототипа обнаружения) будут созданы на основе JSON-объекта из того же значения JSON, что и родительское правило обнаружения. Например, если исходный JSON имеет вид [<object A>, <object B>] и существует один прототип вложенного правила обнаружения, тогда будут созданы два правила обнаружения на основе данных объекта A и объекта B соответственно.
В этом случае прототип обнаружения активируется одновременно с родительским правилом. Таким образом, вложенное правило может использовать предобработку для работы с другим "срезом" тех же данных, уже полученных родительским правилом.
LLD-макросы из родительского правила LLD доступны для вложенных правил обнаружения.
Вложенные правила LLD на обнаруженных узлах сети
Вложенное правило низкоуровневого обнаружения можно использовать в шаблоне узла сети, назначенном прототипу узла сети. Если вложенное правило обнаружения существует на обнаруженном узле сети, тогда объект JSON, используемый для обнаружения узла сети, также отправляется всем правилам LLD вложенного типа на этом узле сети. Подробнее см. в примере.
Макросы LLD из правила обнаружения, создавшего узел сети, доступны для вложенных правил обнаружения.
Пример
Давайте проиллюстрируем возможное применение прототипов обнаружения на основе получения следующего примера многоуровневого JSON.
[
{
"database": "db1",
"created_at": "2024-02-01T12:30:00Z",
"encoding": "UTF8",
"tablespaces": [
{ "name": "ts1", "max_size": "10GB" },
{ "name": "ts2", "max_size": "20GB" },
{ "name": "ts3", "max_size": "15GB" }
]
},
{
"database": "db2",
"created_at": "2023-11-15T08:45:00Z",
"encoding": "UTF16",
"tablespaces": [
{ "name": "ts1", "max_size": "5GB" },
{ "name": "ts2", "max_size": "25GB" },
{ "name": "ts3", "max_size": "30GB" }
]
},
{
"database": "db3",
"created_at": "2024-01-05T15:10:00Z",
"encoding": "UTF8",
"tablespaces": [
{ "name": "ts1", "max_size": "12GB" },
{ "name": "ts2", "max_size": "18GB" },
{ "name": "ts3", "max_size": "22GB" }
]
}
]
Случай 1
Обнаружение экземпляров баз данных на сервере баз данных, затем обнаружение табличных пространств для каждого экземпляра.
-
У вас есть как минимум один узел сети, связанный с обнаружением сервера баз данных.
-
Создайте правило LLD для этого узла сети с именем Обнаружение баз данных и табличных пространств.
-
Перейдите на вкладку LLD Macros этого правила и добавьте макрос
{#DB}=$.database. -
Добавьте прототип элемента данных для этого правила с именем Активные подключения к {#DB} (Тип: Агент, ключ:
db.connections[{#DB}]). -
Обнаруживаются элементы данных, относящиеся к каждой базе данных:
Active connections to db1, Active connections to db2, Active connections to db3.
-
Создайте прототип обнаружения для этого правила с именем Обнаружение табличных пространств для {#DB} (Тип: Nested, ключ:
db.tablespace.discovery[{#DB}]). -
Перейдите на вкладку Preprocessing этого прототипа обнаружения и добавьте шаг
JSONPath=$.tablespaces. -
Перейдите на вкладку LLD Macros этого прототипа обнаружения и добавьте макрос
{#TSNAME}=$.name. -
Создайте прототип элемента данных для этого прототипа обнаружения с именем Размер табличного пространства {#TSNAME} для {#DB} (Тип: Агент, ключ:
db.ts.size[{#DB}, {#TSNAME}]). -
Обнаруживаются элементы данных, относящиеся к каждому табличному пространству каждой базы данных:
Size of tablespace ts1 for db1, Size of tablespace ts2 for db1, Size of tablespace ts3 for db1,
Size of tablespace ts1 for db2, Size of tablespace ts2 for db2, Size of tablespace ts3 for db2,
Size of tablespace ts1 for db3, Size of tablespace ts2 for db3, Size of tablespace ts3 for db3.
с ключами db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Случай 2
Обнаружение экземпляров базы данных на сервере базы данных с представлением их как обнаруженных узлов сети, а затем обнаружение табличных пространств для каждого экземпляра.
-
У вас есть как минимум один узел сети (корневой узел сети), связанный с обнаружением сервера базы данных.
-
Создайте шаблон для обнаружения табличных пространств для каждой базы данных.
-
Создайте в этом шаблоне элемент данных с именем Активные подключения к {#DB} (Тип: Агент, ключ:
db.connections[{#DB}]). -
Создайте правило LLD для этого шаблона с именем Обнаружить табличные пространства (Тип: Вложенный).
-
Перейдите на вкладку Предобработка этого правила и добавьте шаг
JSONPath=$.tablespaces. -
Перейдите на вкладку Макросы LLD этого правила, добавьте макрос
{#TSNAME}=$.name. -
Создайте прототип элемента данных для этого правила с именем Размер табличного пространства {#TSNAME} для {#DB} (Тип: Агент, ключ:
db.ts.size[{#DB}, {#TSNAME}]). -
Вернувшись к корневому узлу сети, создайте правило LLD для этого узла сети с именем Обнаружить базы данных и табличные пространства.
-
Перейдите на вкладку Макросы LLD этого правила, добавьте макрос
{#DB}=$.database. -
Добавьте прототип узла сети для этого правила с именем Узел сети для базы данных {#DB}.
-
Перейдите на вкладку Макросы этого прототипа узла сети, добавьте макрос
{$DB}={#DB}(для имени и ключа элемента данных из шага 3). -
Привяжите шаблон из шага 2 к этому прототипу узла сети.
-
Обнаруженные узлы сети содержат обнаруженные элементы данных, относящиеся к каждой базе данных и её табличным пространствам:
| Узел сети | Элементы данных |
|---|---|
| Узел сети для базы данных db1 | Активные подключения к db1 Размер табличного пространства ts1 для db1 Размер табличного пространства ts2 для db1 Размер табличного пространства ts3 для db1 |
| Узел сети для базы данных db2 | Активные подключения к db2 Размер табличного пространства ts1 для db2 Размер табличного пространства ts2 для db2 Размер табличного пространства ts3 для db2 |
| Узел сети для базы данных db3 | Активные подключения к db3 Размер табличного пространства ts1 для db3 Размер табличного пространства ts2 для db3 Размер табличного пространства ts3 для db3 |