5 Prototypy wykrywania
Przegląd
Prototypy wykrywania to zagnieżdżone reguły wykrywania niskiego poziomu w ramach „nadrzędnej” reguły wykrywania, umożliwiające tworzenie wielopoziomowego wykrywania obiektów z ich własnymi pozycjami, wyzwalaczami itp. Na przykład możesz chcieć wykryć wszystkie instancje bazy danych na serwerze bazy danych, następnie wykryć przestrzenie tabel dla każdej instancji, a potem wykryć tabele dla każdej przestrzeni tabel.
Prototypy wykrywania mają własne prototypy pozycji, wyzwalaczy, wykresów, hostów i wykrywania. Zagnieżdżony prototyp wykrywania będzie używać tej samej wartości JSON co reguła nadrzędna, jeśli określisz typ Nested.
Liczba poziomów zagnieżdżenia dla prototypów wykrywania jest nieograniczona.
Konfiguracja
Aby utworzyć prototyp wykrywania:
- Kliknij Discovery prototypes w wierszu istniejącej reguły wykrywania

- Kliknij Create discovery prototype

Pola konfiguracyjne tego formularza są wspólne ze standardowym wykrywaniem niskiego poziomu.
Jeśli w otwartym formularzu prototypu wykrywania wybierzesz „Nested” jako Type, reguły wykrywania (z prototypu wykrywania) będą generowane na podstawie obiektu JSON z tej samej wartości JSON co nadrzędna reguła wykrywania. Na przykład, jeśli oryginalny JSON ma postać [<object A>, <object B>] i istnieje jeden prototyp zagnieżdżonej reguły wykrywania, wówczas zostaną wygenerowane dwie reguły wykrywania odpowiednio na podstawie danych obiektu A i obiektu B.
W takim przypadku prototyp wykrywania jest aktywowany w tym samym czasie co reguła nadrzędna. Dzięki temu reguła zagnieżdżona może używać przetwarzania wstępnego, aby pracować na innym „wycinku” tych samych danych, już pobranych przez regułę nadrzędną.
Makra LLD z nadrzędnej reguły LLD są dostępne dla zagnieżdżonych reguł wykrywania.
Zagnieżdżone reguły LLD na wykrytych hostach
Zagnieżdżona reguła wykrywania niskiego poziomu może być używana w szablonie hosta przypisanym do prototypu hosta. Jeśli na wykrytym hoście istnieje zagnieżdżona reguła wykrywania, wówczas obiekt JSON użyty do wykrycia hosta jest również przekazywany do wszystkich reguł LLD typu zagnieżdżonego na tym hoście. Więcej szczegółów znajduje się w przykładzie.
Makra LLD z reguły wykrywania, która utworzyła host, są dostępne dla zagnieżdżonych reguł wykrywania.
Przykład
Zilustrujmy możliwe zastosowanie prototypów wykrywania na podstawie otrzymania następującego przykładu wielopoziomowego 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" }
]
}
]
Przypadek 1
Wykrywanie instancji baz danych na serwerze bazy danych, a następnie wykrywanie tablespace'ów dla każdej instancji.
-
Masz co najmniej jeden host powiązany z wykrywaniem serwera bazy danych.
-
Utwórz regułę LLD dla tego hosta o nazwie Wykryj bazy danych i tablespace'y.
-
Przejdź do zakładki Makra LLD w tej regule i dodaj makro
{#DB}=$.database. -
Dodaj prototyp pozycji dla tej reguły o nazwie Aktywne połączenia do {#DB} (Typ: Agent, klucz:
db.connections[{#DB}]). -
Zostaną wykryte pozycje powiązane z każdą bazą danych:
Active connections to db1, Active connections to db2, Active connections to db3.
-
Utwórz prototyp wykrywania dla tej reguły o nazwie Wykryj tablespace'y dla {#DB} (Typ: Zagnieżdżony, klucz:
db.tablespace.discovery[{#DB}]). -
Przejdź do zakładki Przetwarzanie wstępne tego prototypu wykrywania i dodaj krok
JSONPath=$.tablespaces. -
Przejdź do zakładki Makra LLD tego prototypu wykrywania i dodaj makro
{#TSNAME}=$.name. -
Utwórz prototyp pozycji dla tego prototypu wykrywania o nazwie Rozmiar tablespace'a {#TSNAME} dla {#DB} (Typ: Agent, klucz:
db.ts.size[{#DB}, {#TSNAME}]). -
Zostaną wykryte pozycje powiązane z każdym tablespace'em każdej bazy danych:
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.
z kluczami db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].
Przypadek 2
Odkrywanie instancji baz danych na serwerze bazy danych poprzez reprezentowanie ich jako odkrytych hostów, a następnie odkrywanie tablespace dla każdej instancji.
-
Masz co najmniej jeden host (host główny) powiązany z odkrywaniem serwera bazy danych.
-
Utwórz szablon do odkrywania tablespace dla każdej bazy danych.
-
Utwórz w tym szablonie pozycję o nazwie Aktywne połączenia do {#DB} (Typ: Agent, Klucz:
db.connections[{#DB}]). -
Utwórz regułę LLD dla tego szablonu o nazwie Odkryj tablespace (Typ: Zagnieżdżony).
-
Przejdź do zakładki Preprocessing tej reguły i dodaj krok
JSONPath=$.tablespaces. -
Przejdź do zakładki LLD Macros tej reguły, dodaj makro
{#TSNAME}=$.name. -
Utwórz prototyp pozycji dla tej reguły o nazwie Rozmiar tablespace {#TSNAME} dla {#DB} (Typ: Agent, Klucz:
db.ts.size[{#DB}, {#TSNAME}]). -
Wracając do hosta głównego, utwórz regułę LLD dla tego hosta o nazwie Odkryj bazy danych i tablespace.
-
Przejdź do zakładki LLD Macros tej reguły, dodaj makro
{#DB}=$.database. -
Dodaj prototyp hosta dla tej reguły o nazwie Host dla bazy danych {#DB}.
-
Przejdź do zakładki Macros tego prototypu hosta, dodaj makro
{$DB}={#DB}(dla nazwy i klucza pozycji z kroku 3). -
Podłącz szablon z kroku 2 do tego prototypu hosta.
-
Odkryte hosty zawierają odkryte pozycje powiązane z każdą bazą danych i jej tablespace:
| Host | Pozycje |
|---|---|
| Host dla bazy danych db1 | Aktywne połączenia do db1 Rozmiar tablespace ts1 dla db1 Rozmiar tablespace ts2 dla db1 Rozmiar tablespace ts3 dla db1 |
| Host dla bazy danych db2 | Aktywne połączenia do db2 Rozmiar tablespace ts1 dla db2 Rozmiar tablespace ts2 dla db2 Rozmiar tablespace ts3 dla db2 |
| Host dla bazy danych db3 | Aktywne połączenia do db3 Rozmiar tablespace ts1 dla db3 Rozmiar tablespace ts2 dla db3 Rozmiar tablespace ts3 dla db3 |