5 ディスカバリのプロトタイプ
概要
ディスカバリプロトタイプは、「親」ディスカバリルール内にネストされたローレベルディスカバリルールであり、独自のアイテム、トリガーなどを持つオブジェクトの多段階ディスカバリを作成できます。たとえば、データベースサーバー上のすべてのデータベースインスタンスをディスカバリし、次に各インスタンスの表領域をディスカバリし、その後各表領域のテーブルをディスカバリしたい場合があります。
ディスカバリプロトタイプには、独自のアイテム、トリガー、グラフ、ホスト、およびディスカバリプロトタイプがあります。Nested タイプを指定すると、ネストされたディスカバリプロトタイプは親ルールと同じJSON値を使用します。
ディスカバリプロトタイプのネストレベルに制限はありません。
設定
ディスカバリプロトタイプを作成するには:
- 既存のディスカバリルールの行で、Discovery prototypes をクリックします

- Create discovery prototype をクリックします

このフォームの設定フィールドは、通常のローレベルディスカバリと共通です。
開いたディスカバリプロトタイプフォームで、Type として「Nested」を選択すると、親ディスカバリルールと同じJSON値内のJSONオブジェクトに基づいて、ディスカバリルール(ディスカバリプロトタイプから)が生成されます。たとえば、元のJSONが [<object A>, <object B>] で、ネストされたディスカバリルールプロトタイプが1つある場合、それぞれオブジェクトAとオブジェクトBのデータに基づいて2つのディスカバリルールが生成されます。
この場合、ディスカバリプロトタイプは親ルールと同時に有効化されます。そのため、ネストされたルールでは前処理を使用して、親によってすでに取得された同じデータの別の「スライス」を処理できます。
親LLDルールのLLDマクロは、ネストされたディスカバリルールでも利用できます。
検出されたホスト上のネストされたLLDルール
Nested 低レベルディスカバリルールは、ホストプロトタイプに割り当てられたホストテンプレートで使用できます。検出されたホスト上に Nested ディスカバリルールが存在する場合、そのホストの検出に使用されたJSONオブジェクトは、このホスト上のネスト型のすべてのLLDルールにも送信されます。詳細については、example を参照してください。
ホストを作成したディスカバリルールのLLDマクロは、ネストされたディスカバリルールで利用できます。
例
次のマルチレベル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" }
]
}
]
ケース1
データベースサーバー上のデータベースインスタンスをディスカバリし、その後、各インスタンスの表領域をディスカバリします。
-
データベースサーバーのディスカバリに関連するホストが少なくとも1つ必要です。
-
このホストに対して、Discover databases and tablespaces という名前のLLDルールを作成します。
-
このルールの LLDマクロ タブに切り替え、マクロ
{#DB}=$.databaseを追加します。 -
このルールに対して、Active connections to {#DB} という名前のアイテムのプロトタイプを追加します(タイプ: エージェント、キー:
db.connections[{#DB}])。 -
各データベースに関連するアイテムがディスカバリされます。
Active connections to db1, Active connections to db2, Active connections to db3.
-
このルールに対して、Discover tablespaces for {#DB} という名前のディスカバリのプロトタイプを作成します(タイプ: ネスト、キー:
db.tablespace.discovery[{#DB}])。 -
このディスカバリのプロトタイプの 前処理 タブに切り替え、ステップ
JSONPath=$.tablespacesを追加します。 -
このディスカバリのプロトタイプの LLDマクロ タブに切り替え、マクロ
{#TSNAME}=$.nameを追加します。 -
このディスカバリのプロトタイプに対して、Size of tablespace {#TSNAME} for {#DB} という名前のアイテムのプロトタイプを作成します(タイプ: エージェント、キー:
db.ts.size[{#DB}, {#TSNAME}])。 -
各データベースの各表領域に関連するアイテムがディスカバリされます。
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.
キーは db.ts.size[db1,ts1]、db.ts.size[db1,ts2]、... db.ts.size[db3,ts3] です。
ケース2
データベースサーバー上のデータベースインスタンスをディスカバリされたホストとして表現して検出し、その後、各インスタンスの表領域を検出します。
-
データベースサーバーのディスカバリに関連するホスト(ルートホスト)が少なくとも1つあることを確認します。
-
各データベースの表領域を検出するためのテンプレートを作成します。
-
このテンプレートに、{#DB} へのアクティブ接続数 という名前のアイテムを作成します(タイプ: エージェント、キー:
db.connections[{#DB}])。 -
このテンプレートに、表領域の検出 という名前の LLDルール を作成します(タイプ: ネスト)。
-
このルールの Preprocessing タブに切り替え、ステップ
JSONPath=$.tablespacesを追加します。 -
このルールの LLD Macros タブに切り替え、マクロ
{#TSNAME}=$.nameを追加します。 -
このルールに、{#DB} の表領域 {#TSNAME} のサイズ という名前のアイテムプロトタイプを作成します(タイプ: エージェント、キー:
db.ts.size[{#DB}, {#TSNAME}])。 -
ルートホストに戻り、このホストに データベースと表領域の検出 という名前の LLDルール を作成します。
-
このルールの LLD Macros タブに切り替え、マクロ
{#DB}=$.databaseを追加します。 -
このルールに、データベース {#DB} 用ホスト という名前のホストプロトタイプを追加します。
-
このホストプロトタイプの Macros タブに切り替え、マクロ
{$DB}={#DB}を追加します(手順3のアイテム名とキーのため)。 -
手順2で作成したテンプレートをこのホストプロトタイプにリンクします。
-
ディスカバリされたホストには、各データベースおよびその表領域に関連するディスカバリ済みアイテムが含まれます。
| ホスト | アイテム |
|---|---|
| データベース db1 用ホスト | db1 へのアクティブ接続数 db1 の表領域 ts1 のサイズ db1 の表領域 ts2 のサイズ db1 の表領域 ts3 のサイズ |
| データベース db2 用ホスト | db2 へのアクティブ接続数 db2 の表領域 ts1 のサイズ db2 の表領域 ts2 のサイズ db2 の表領域 ts3 のサイズ |
| データベース db3 用ホスト | db3 へのアクティブ接続数 db3 の表領域 ts1 のサイズ db3 の表領域 ts2 のサイズ db3 の表領域 ts3 のサイズ |