5 Prototipos de descubrimiento
Descripción general
Los prototipos de descubrimiento son reglas de descubrimiento de bajo nivel anidadas dentro de una regla de descubrimiento "principal", lo que permite crear un descubrimiento multinivel de objetos con sus propios elementos, disparadores, etc. Por ejemplo, puede que desee descubrir todas las instancias de bases de datos en un servidor de bases de datos, luego descubrir los espacios de tablas para cada instancia y, a continuación, descubrir las tablas para cada espacio de tablas.
Los prototipos de descubrimiento tienen sus propios prototipos de elemento, disparador, gráfico, host y descubrimiento. Un prototipo de descubrimiento anidado utilizará el mismo valor JSON que la regla principal si especifica un tipo Anidado.
Los niveles de anidamiento para los prototipos de descubrimiento son ilimitados.
Configuración
Para crear una plantilla de descubrimiento:
- Haga clic en Plantillas de descubrimiento en la fila de una regla de descubrimiento existente

- Haga clic en Crear plantilla de descubrimiento

Los campos de configuración de este formulario se comparten con el descubrimiento de bajo nivel regular.
Si selecciona "Anidado" como Tipo en el formulario de plantilla de descubrimiento abierto, entonces las reglas de descubrimiento (de la plantilla de descubrimiento) se generan en función de un objeto JSON del mismo valor JSON que la regla de descubrimiento principal. Por ejemplo, si el JSON original es [<objeto A>, <objeto B>] y hay una plantilla de regla de descubrimiento anidada, entonces se generarían dos reglas de descubrimiento basadas en los datos del objeto A y del objeto B respectivamente.
En este caso, la plantilla de descubrimiento se activa al mismo tiempo que la regla principal. La regla anidada, por lo tanto, puede usar preprocesamiento para trabajar en otra "porción" de los mismos datos, ya adquiridos por la principal.
Las macros LLD de la regla LLD principal están disponibles para las reglas de descubrimiento anidadas.
Reglas LLD anidadas en equipos descubiertos
Una regla de descubrimiento de bajo nivel Anidada puede usarse en una plantilla de equipo asignada a un prototipo de equipo. Si existe una regla de descubrimiento Anidada en un equipo descubierto, entonces el objeto JSON utilizado para descubrir el equipo también se envía a todas las reglas LLD de tipo anidado en este equipo. Para más detalles, consulte el ejemplo.
Las macros LLD de la regla de descubrimiento que creó el equipo están disponibles para las reglas de descubrimiento anidadas.
Ejemplo
Ilustremos una posible aplicación de los prototipos de descubrimiento, basada en la recepción del siguiente ejemplo de JSON multinivel.
[
{
"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" }
]
}
]
Caso 1
Descubrir instancias de base de datos en un server de base de datos y, a continuación, descubrir los tablespaces de cada instancia.
-
Tiene al menos un host relacionado con el descubrimiento del server de base de datos.
-
Cree una regla LLD para este host con el nombre Descubrir bases de datos y tablespaces.
-
Cambie a la pestaña Macros LLD de esta regla y añada la macro
{#DB}=$.database. -
Añada un prototipo de item para esta regla con el nombre Conexiones activas a {#DB} (Tipo: Agent, Clave:
db.connections[{#DB}]). -
Se descubren los items relacionados con cada base de datos:
Active connections to db1, Active connections to db2, Active connections to db3.
-
Cree un prototipo de descubrimiento para esta regla con el nombre Descubrir tablespaces para {#DB} (Tipo: Nested, Clave:
db.tablespace.discovery[{#DB}]). -
Cambie a la pestaña Preprocessing de este prototipo de descubrimiento y añada el paso
JSONPath=$.tablespaces. -
Cambie a la pestaña Macros LLD de este prototipo de descubrimiento y añada la macro
{#TSNAME}=$.name. -
Cree un prototipo de item para este prototipo de descubrimiento con el nombre Tamaño del tablespace {#TSNAME} para {#DB} (Tipo: Agent, Clave:
db.ts.size[{#DB}, {#TSNAME}]). -
Se descubren los items relacionados con cada tablespace de cada base de datos:
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.
con las claves db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Caso 2
Descubrir instancias de base de datos en el server de base de datos representándolas como hosts descubiertos, y luego descubrir los tablespaces de cada instancia.
-
Tiene al menos un host (host raíz) relacionado con el descubrimiento del server de base de datos.
-
Cree un template para descubrir los tablespaces de cada base de datos.
-
Cree un item en este template llamado Conexiones activas a {#DB} (Tipo: Agent, Clave:
db.connections[{#DB}]). -
Cree una regla LLD para este template llamada Descubrir tablespaces (Tipo: Nested).
-
Cambie a la pestaña Preprocessing de esta regla y agregue el paso
JSONPath=$.tablespaces. -
Cambie a la pestaña LLD Macros de esta regla, agregue la macro
{#TSNAME}=$.name. -
Cree un prototipo de item para esta regla llamado Tamaño del tablespace {#TSNAME} para {#DB} (Tipo: Agent, Clave:
db.ts.size[{#DB}, {#TSNAME}]). -
De vuelta en el host raíz, cree una regla LLD para este host llamada Descubrir bases de datos y tablespaces.
-
Cambie a la pestaña LLD Macros de esta regla, agregue la macro
{#DB}=$.database. -
Agregue un prototipo de host para esta regla llamado Host para la base de datos {#DB}.
-
Cambie a la pestaña Macros de este prototipo de host, agregue la macro
{$DB}={#DB}(para el nombre y la clave del item del paso 3). -
Vincule el template del paso 2 a este prototipo de host.
-
Los hosts descubiertos contienen los items descubiertos relacionados con cada base de datos y sus tablespaces:
| Host | Items |
|---|---|
| Host para la base de datos db1 | Conexiones activas a db1 Tamaño del tablespace ts1 para db1 Tamaño del tablespace ts2 para db1 Tamaño del tablespace ts3 para db1 |
| Host para la base de datos db2 | Conexiones activas a db2 Tamaño del tablespace ts1 para db2 Tamaño del tablespace ts2 para db2 Tamaño del tablespace ts3 para db2 |
| Host para la base de datos db3 | Conexiones activas a db3 Tamaño del tablespace ts1 para db3 Tamaño del tablespace ts2 para db3 Tamaño del tablespace ts3 para db3 |