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.
Para crear una 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.
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.
Vamos a ilustrar la posible aplicación de prototipos de descubrimiento, basándonos 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" }
]
}
]Descubrir instancias de bases de datos en un servidor de bases de datos y luego descubrir los tablespaces para cada instancia.
Tiene al menos un equipo relacionado con el descubrimiento del servidor de bases de datos.
Cree una regla LLD para este equipo llamada Descubrir bases de datos y tablespaces.
Cambie a la pestaña Macros LLD en esta regla, agregue la macro {#DB}=$.database.
Agregue un prototipo de métrica para esta regla llamado Conexiones activas a {#DB} (Tipo: Agente, Clave: db.connections[{#DB}]).
Se descubren las métricas relacionadas con cada base de datos:
Cree un prototipo de descubrimiento para esta regla llamado Descubrir tablespaces para {#DB} (Tipo: Anidado, Clave: db.tablespace.discovery[{#DB}]).
Cambie a la pestaña Preprocesamiento de este prototipo de descubrimiento y agregue el paso JSONPath=$.tablespaces.
Cambie a la pestaña Macros LLD de este prototipo de descubrimiento, agregue la macro {#TSNAME}=$.name.
Cree un prototipo de métrica para este prototipo de descubrimiento llamado Tamaño del tablespace {#TSNAME} para {#DB} (Tipo: Agente, Clave: db.ts.size[{#DB}, {#TSNAME}]).
Se descubren las métricas relacionadas con cada tablespace de cada base de datos:
Tamaño del tablespace ts1 para db1, Tamaño del tablespace ts2 para db1, Tamaño del tablespace ts3 para db1,
Tamaño del tablespace ts1 para db2, Tamaño del tablespace ts2 para db2, Tamaño del tablespace ts3 para db2,
Tamaño del tablespace ts1 para db3, Tamaño del tablespace ts2 para db3, Tamaño del tablespace ts3 para db3.con las claves db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Descubrir instancias de bases de datos en el servidor de bases de datos representándolas como equipos descubiertos y luego descubrir los tablespaces para cada instancia.
Tiene al menos un equipo (equipo raíz) relacionado con el descubrimiento del servidor de bases de datos.
Cree una plantilla para descubrir los tablespaces de cada base de datos.
Cree una métrica en esta plantilla llamada Conexiones activas a {#DB} (Tipo: Agente, Clave: db.connections[{#DB}]).
Cree una regla LLD para esta plantilla llamada Descubrir tablespaces (Tipo: Anidada).
Cambie a la pestaña Preprocesamiento de esta regla y agregue el paso JSONPath=$.tablespaces.
Cambie a la pestaña Macros LLD de esta regla, agregue la macro {#TSNAME}=$.name.
Cree un prototipo de métrica para esta regla llamado Tamaño del tablespace {#TSNAME} para {#DB} (Tipo: Agente, Clave: db.ts.size[{#DB}, {#TSNAME}]).
De vuelta en el equipo raíz, cree una regla LLD para este equipo llamada Descubrir bases de datos y tablespaces.
Cambie a la pestaña Macros LLD de esta regla, agregue la macro {#DB}=$.database.
Agregue un prototipo de equipo para esta regla llamado Equipo para la base de datos {#DB}.
Cambie a la pestaña Macros de este prototipo de equipo, agregue la macro {$DB}={#DB} (para el nombre y la clave de la métrica del Paso 3).
Vincule la plantilla del paso 2 a este prototipo de equipo.
Los equipos descubiertos contienen las métricas descubiertas relacionadas con cada base de datos y sus tablespaces:
| Equipo | Métricas |
|---|---|
| Equipo 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 |
| Equipo 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 |
| Equipo 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 |