5 Discovery-Prototypen
Übersicht
Discovery-Prototypen sind verschachtelte Low-Level-Discovery-Regeln innerhalb einer „übergeordneten“ Discovery-Regel und ermöglichen die mehrstufige Discovery von Objekten mit ihren eigenen Datenpunkten, Auslösern usw. Beispielsweise möchten Sie möglicherweise zunächst alle Datenbankinstanzen auf einem Datenbank-Server entdecken, dann für jede Instanz die Tablespaces und anschließend für jeden Tablespace die Tabellen.
Discovery-Prototypen verfügen über eigene Datenpunkt-, Auslöser-, Graph-, Host- und Discovery-Prototypen. Ein verschachtelter Discovery-Prototyp verwendet denselben JSON-Wert wie die übergeordnete Regel, wenn Sie den Typ Verschachtelt angeben.
Die Anzahl der Verschachtelungsebenen für Discovery-Prototypen ist unbegrenzt.
Konfiguration
So erstellen Sie einen Suchlaufprototypen:
- Klicken Sie in der Zeile einer vorhandenen Suchlaufregel auf Suchlaufprototypen

- Klicken Sie auf Suchlaufprototyp erstellen

Die Konfigurationsfelder dieses Formulars entsprechen denen der regulären Low-Level-Discovery.
Wenn Sie im geöffneten Formular für den Suchlaufprototypen als Typ „Verschachtelt“ auswählen, werden Suchlaufregeln (aus dem Suchlaufprototypen) auf Basis eines JSON-Objekts aus demselben JSON-Wert wie bei der übergeordneten Suchlaufregel erzeugt. Wenn das ursprüngliche JSON beispielsweise [<Objekt A>, <Objekt B>] ist und es einen verschachtelten Suchlaufregelprototypen gibt, dann würden entsprechend zwei Suchlaufregeln auf Basis der Daten von Objekt A bzw. Objekt B erzeugt.
In diesem Fall wird der Suchlaufprototyp gleichzeitig mit der übergeordneten Regel aktiviert. Die verschachtelte Regel kann daher die Vorverarbeitung verwenden, um mit einem anderen „Ausschnitt“ derselben Daten zu arbeiten, die bereits von der übergeordneten Regel erfasst wurden.
LLD-Makros aus der übergeordneten LLD-Regel sind für verschachtelte Suchlaufregeln verfügbar.
Verschachtelte LLD-Regeln auf erkannten Hosts
Eine verschachtelte Low-Level-Discovery-Regel kann auf einer Host-Vorlage verwendet werden, die einem Host-Prototyp zugewiesen ist. Wenn auf einem erkannten Host eine verschachtelte Discovery-Regel vorhanden ist, wird das JSON-Objekt, das zur Erkennung des Hosts verwendet wurde, auch an alle LLD-Regeln des verschachtelten Typs auf diesem Host gesendet. Weitere Details finden Sie im Beispiel.
LLD-Makros aus der Discovery-Regel, die den Host erstellt hat, sind für verschachtelte Discovery-Regeln verfügbar.
Beispiel
Veranschaulichen wir die mögliche Anwendung von Discovery-Prototypen anhand des Empfangs des folgenden Beispiels für mehrstufiges 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" }
]
}
]
Fall 1
Erkennung von Datenbankinstanzen auf einem Datenbankserver und anschließende Erkennung der Tablespaces für jede Instanz.
-
Sie haben mindestens einen Host, der mit der Erkennung des Datenbankservers verknüpft ist.
-
Erstellen Sie für diesen Host eine LLD-Regel mit dem Namen Datenbanken und Tablespaces erkennen.
-
Wechseln Sie in dieser Regel auf den Reiter LLD-Makros und fügen Sie das Makro
{#DB}=$.databasehinzu. -
Fügen Sie für diese Regel einen Datenpunkt-Prototyp mit dem Namen Aktive Verbindungen zu {#DB} hinzu (Typ: Agent, Schlüssel:
db.connections[{#DB}]). -
Die Datenpunkte für jede Datenbank werden erkannt:
Active connections to db1, Active connections to db2, Active connections to db3.
-
Erstellen Sie für diese Regel einen Discovery-Prototyp mit dem Namen Tablespaces für {#DB} erkennen (Typ: Nested, Schlüssel:
db.tablespace.discovery[{#DB}]). -
Wechseln Sie auf den Reiter Preprocessing dieses Discovery-Prototyps und fügen Sie den Schritt
JSONPath=$.tablespaceshinzu. -
Wechseln Sie auf den Reiter LLD-Makros dieses Discovery-Prototyps und fügen Sie das Makro
{#TSNAME}=$.namehinzu. -
Erstellen Sie für diesen Discovery-Prototyp einen Datenpunkt-Prototyp mit dem Namen Größe des Tablespace {#TSNAME} für {#DB} (Typ: Agent, Schlüssel:
db.ts.size[{#DB}, {#TSNAME}]). -
Die Datenpunkte für jeden Tablespace jeder Datenbank werden erkannt:
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.
mit den Schlüsseln db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Fall 2
Erkennung von Datenbankinstanzen auf dem Datenbank-Server, indem sie als erkannte Hosts dargestellt werden, und anschließende Erkennung der Tablespaces für jede Instanz.
-
Sie haben mindestens einen Host (Root-Host), der mit der Erkennung des Datenbank-Servers verknüpft ist.
-
Erstellen Sie eine Vorlage, um die Tablespaces für jede Datenbank zu erkennen.
-
Erstellen Sie in dieser Vorlage einen Datenpunkt mit dem Namen Aktive Verbindungen zu {#DB} (Typ: Agent, Schlüssel:
db.connections[{#DB}]). -
Erstellen Sie für diese Vorlage eine LLD-Regel mit dem Namen Tablespaces erkennen (Typ: Verschachtelt).
-
Wechseln Sie zur Registerkarte Preprocessing dieser Regel und fügen Sie den Schritt
JSONPath=$.tablespaceshinzu. -
Wechseln Sie zur Registerkarte LLD-Makros dieser Regel und fügen Sie das Makro
{#TSNAME}=$.namehinzu. -
Erstellen Sie für diese Regel einen Datenpunkt-Prototyp mit dem Namen Größe des Tablespace {#TSNAME} für {#DB} (Typ: Agent, Schlüssel:
db.ts.size[{#DB}, {#TSNAME}]). -
Erstellen Sie zurück auf dem Root-Host eine LLD-Regel für diesen Host mit dem Namen Datenbanken und Tablespaces erkennen.
-
Wechseln Sie bei dieser Regel zur Registerkarte LLD-Makros und fügen Sie das Makro
{#DB}=$.databasehinzu. -
Fügen Sie für diese Regel einen Host-Prototyp mit dem Namen Host für Datenbank {#DB} hinzu.
-
Wechseln Sie bei diesem Host-Prototyp zur Registerkarte Makros und fügen Sie das Makro
{$DB}={#DB}hinzu (für den Namen und den Schlüssel des Datenpunkts aus Schritt 3). -
Verknüpfen Sie die Vorlage aus Schritt 2 mit diesem Host-Prototyp.
-
Die erkannten Hosts enthalten die erkannten Datenpunkte für jede Datenbank und ihre Tablespaces:
| Host | Datenpunkte |
|---|---|
| Host für Datenbank db1 | Aktive Verbindungen zu db1 Größe des Tablespace ts1 für db1 Größe des Tablespace ts2 für db1 Größe des Tablespace ts3 für db1 |
| Host für Datenbank db2 | Aktive Verbindungen zu db2 Größe des Tablespace ts1 für db2 Größe des Tablespace ts2 für db2 Größe des Tablespace ts3 für db2 |
| Host für Datenbank db3 | Aktive Verbindungen zu db3 Größe des Tablespace ts1 für db3 Größe des Tablespace ts2 für db3 Größe des Tablespace ts3 für db3 |