5 Prototipi di discovery
Panoramica
I prototipi di discovery sono regole di low-level discovery annidate all'interno di una regola di discovery "padre", che consentono di creare una discovery multilivello di oggetti con i propri item, trigger, ecc. Ad esempio, potresti voler individuare tutte le istanze di database su un server di database, quindi individuare i tablespace per ogni istanza, quindi individuare le tabelle per ogni tablespace.
I prototipi di discovery hanno propri prototipi di item, trigger, grafico, host e discovery. Un prototipo di discovery annidato utilizzerà lo stesso valore JSON della regola padre se specifichi un tipo Nested.
I livelli di annidamento per i prototipi di discovery sono illimitati.
Configurazione
Per creare un prototipo di discovery:
- Fare clic su Discovery prototypes nella riga di una regola di discovery esistente

- Fare clic su Create discovery prototype

I campi di configurazione di questo modulo sono condivisi con la normale low-level discovery.
Se si seleziona "Nested" come Type nel modulo del prototipo di discovery aperto, le regole di discovery (dal prototipo di discovery) vengono generate in base a un oggetto JSON dallo stesso valore JSON della regola di discovery padre. Ad esempio, se il JSON originale è [<object A>, <object B>] ed è presente un prototipo di regola di discovery annidata, verranno generate due regole di discovery basate rispettivamente sui dati dell'oggetto A e dell'oggetto B.
In questo caso il prototipo di discovery viene attivato contemporaneamente alla regola padre. La regola annidata può quindi usare il preprocessing per lavorare su un'altra "porzione" degli stessi dati, già acquisiti dalla regola padre.
Le macro LLD della regola LLD padre sono disponibili per le regole di discovery annidate.
Regole LLD annidate sugli host rilevati
Una regola di low-level discovery Nested può essere utilizzata in un template dell'host assegnato a un prototipo di host. Se una regola di discovery Nested esiste su un host rilevato, allora l'oggetto JSON utilizzato per rilevare l'host viene inviato anche a tutte le regole LLD di tipo annidato su questo host. Per maggiori dettagli, vedere l'esempio.
Le macro LLD della regola di discovery che ha creato l'host sono disponibili per le regole di discovery annidate.
Esempio
Illustriamo una possibile applicazione dei prototipi di individuazione, basata sulla ricezione del seguente esempio di JSON multilivello.
[
{
"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
Rilevamento delle istanze di database su un server di database, quindi rilevamento dei tablespace per ciascuna istanza.
-
Si dispone di almeno un host relativo al rilevamento del server di database.
-
Creare una regola LLD per questo host denominata Rileva database e tablespace.
-
Passare alla scheda Macro LLD di questa regola e aggiungere la macro
{#DB}=$.database. -
Aggiungere un prototipo di item per questa regola denominato Connessioni attive a {#DB} (Tipo: Agent, Chiave:
db.connections[{#DB}]). -
Vengono rilevati gli item relativi a ciascun database:
Active connections to db1, Active connections to db2, Active connections to db3.
-
Creare un prototipo di discovery per questa regola denominato Rileva tablespace per {#DB} (Tipo: Nested, Chiave:
db.tablespace.discovery[{#DB}]). -
Passare alla scheda Preprocessing di questo prototipo di discovery e aggiungere il passaggio
JSONPath=$.tablespaces. -
Passare alla scheda Macro LLD di questo prototipo di discovery e aggiungere la macro
{#TSNAME}=$.name. -
Creare un prototipo di item per questo prototipo di discovery denominato Dimensione del tablespace {#TSNAME} per {#DB} (Tipo: Agent, Chiave:
db.ts.size[{#DB}, {#TSNAME}]). -
Vengono rilevati gli item relativi a ciascun tablespace di ciascun database:
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 le chiavi db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Caso 2
Rilevamento delle istanze di database sul server di database rappresentandole come host rilevati, quindi rilevamento dei tablespace per ciascuna istanza.
-
È presente almeno un host (host radice) correlato al rilevamento del server di database.
-
Creare un template per rilevare i tablespace per ciascun database.
-
Creare un item in questo template denominato Connessioni attive a {#DB} (Tipo: Agent, Chiave:
db.connections[{#DB}]). -
Creare una regola LLD per questo template denominata Rileva tablespace (Tipo: Nested).
-
Passare alla scheda Preprocessing di questa regola e aggiungere il passaggio
JSONPath=$.tablespaces. -
Passare alla scheda LLD Macros di questa regola, aggiungere la macro
{#TSNAME}=$.name. -
Creare un prototipo di item per questa regola denominato Dimensione del tablespace {#TSNAME} per {#DB} (Tipo: Agent, Chiave:
db.ts.size[{#DB}, {#TSNAME}]). -
Tornare all'host radice e creare una regola LLD per questo host denominata Rileva database e tablespace.
-
Passare alla scheda LLD Macros di questa regola, aggiungere la macro
{#DB}=$.database. -
Aggiungere un prototipo di host per questa regola denominato Host per il database {#DB}.
-
Passare alla scheda Macros di questo prototipo di host, aggiungere la macro
{$DB}={#DB}(per il nome e la chiave dell'item del passaggio 3). -
Collegare il template del passaggio 2 a questo prototipo di host.
-
Gli host rilevati contengono gli item rilevati relativi a ciascun database e ai relativi tablespace:
| Host | Item |
|---|---|
| Host per il database db1 | Connessioni attive a db1 Dimensione del tablespace ts1 per db1 Dimensione del tablespace ts2 per db1 Dimensione del tablespace ts3 per db1 |
| Host per il database db2 | Connessioni attive a db2 Dimensione del tablespace ts1 per db2 Dimensione del tablespace ts2 per db2 Dimensione del tablespace ts3 per db2 |
| Host per il database db3 | Connessioni attive a db3 Dimensione del tablespace ts1 per db3 Dimensione del tablespace ts2 per db3 Dimensione del tablespace ts3 per db3 |