ディスカバリプロトタイプ

概要

ディスカバリプロトタイプは、「親」ディスカバリルール内にあるネストされた低レベルディスカバリルールであり、独自のアイテム、トリガーなどを持つオブジェクトの多層ディスカバリを作成できます。例えば、データベースサーバー上のすべてのデータベースインスタンスをディスカバリし、次に各インスタンスのテーブルスペースをディスカバリし、次に各テーブルスペースのテーブルをディスカバリしたい場合などです。

ディスカバリプロトタイプには、独自のアイテム、トリガー、グラフ、ホスト、ディスカバリプロトタイプがあります。ネストタイプを指定した場合、ネストされたディスカバリプロトタイプは親ルールと同じJSON値を使用します。

ディスカバリプロトタイプのネストレベルに制限はありません。

設定

ディスカバリプロトタイプを作成するには、次の手順を実行します。

  • 既存のディスカバリルールの行で Discovery prototypes をクリックします

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

このフォームの設定項目は、通常の low-level discovery と共通です。

開いたディスカバリプロトタイプフォームで Type に "Nested" を選択すると、ディスカバリルール(ディスカバリプロトタイプから生成される)は、親のディスカバリルールと同じ JSON 値に含まれる JSON オブジェクトを基に生成されます。たとえば、元の JSON が [<object A>, <object B>] で、ネストされたディスカバリルールプロトタイプが 1 つある場合、object A と object B のデータをそれぞれ基に 2 つのディスカバリルールが生成されます。

この場合、ディスカバリプロトタイプは親ルールと同時に有効化されます。そのため、ネストされたルールでは前処理を使用して、親がすでに取得した同じデータの別の「スライス」を処理できます。

親の LLD ルールの LLD マクロは、ネストされたディスカバリルールでも利用できます。

検出されたホストでのネストされたLLDルール

ネストされた低レベルディスカバリールールは、ホストプロトタイプに割り当てられたホストテンプレートで使用できます。検出されたホストにネストされたディスカバリールールが存在する場合、ホストの検出に使用されたJSONオブジェクトは、このホストのすべてのネスト型LLDルールにも送信されます。詳細はを参照してください。

ホストを作成したディスカバリールールの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. データベースサーバーのディスカバリに関連するホストが少なくとも1つ必要です。

  2. このホストに対して、Discover databases and tablespaces という名前のLLDルールを作成します。

  3. このルールの LLDマクロ タブに切り替え、マクロ {#DB}=$.database を追加します。

  4. このルールに対して、Active connections to {#DB} という名前のアイテムのプロトタイプを追加します(タイプ: エージェント、キー: db.connections[{#DB}])。

  5. 各データベースに関連するアイテムがディスカバリされます。

Active connections to db1, Active connections to db2, Active connections to db3.
  1. このルールに対して、Discover tablespaces for {#DB} という名前のディスカバリのプロトタイプを作成します(タイプ: ネスト、キー: db.tablespace.discovery[{#DB}])。

  2. このディスカバリのプロトタイプの 前処理 タブに切り替え、ステップ JSONPath=$.tablespaces を追加します。

  3. このディスカバリのプロトタイプの LLDマクロ タブに切り替え、マクロ {#TSNAME}=$.name を追加します。

  4. このディスカバリのプロトタイプに対して、Size of tablespace {#TSNAME} for {#DB} という名前のアイテムのプロトタイプを作成します(タイプ: エージェント、キー: db.ts.size[{#DB}, {#TSNAME}])。

  5. 各データベースの各表領域に関連するアイテムがディスカバリされます。

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. データベースサーバーの検出に関連するホスト(ルートホスト)が少なくとも1つ必要です。

  2. 各データベースの表領域を検出するためのテンプレートを作成します。

  3. このテンプレートに、{#DB} へのアクティブ接続 という名前のアイテムを作成します(タイプ: エージェント、キー: db.connections[{#DB}])。

  4. このテンプレートに、表領域を検出 という名前の LLDルール を作成します(タイプ: ネスト)。

  5. このルールの Preprocessing タブに切り替え、ステップ JSONPath=$.tablespaces を追加します。

  6. このルールの LLD Macros タブに切り替え、マクロ {#TSNAME}=$.name を追加します。

  7. このルールのアイテムプロトタイプとして、{#DB} の表領域 {#TSNAME} のサイズ という名前のアイテムを作成します(タイプ: エージェント、キー: db.ts.size[{#DB}, {#TSNAME}])。

  8. ルートホストに戻り、このホストに データベースと表領域を検出 という名前の LLDルール を作成します。

  9. このルールの LLD Macros タブに切り替え、マクロ {#DB}=$.database を追加します。

  10. このルールに、データベース {#DB} 用ホスト という名前のホストプロトタイプを追加します。

  11. このホストプロトタイプの Macros タブに切り替え、マクロ {$DB}={#DB} を追加します(手順3のアイテム名とキー用)。

  12. 手順2のテンプレートをこのホストプロトタイプにリンクします。

  13. 検出されたホストには、各データベースとその表領域に関連する検出済みアイテムが含まれます。

ホスト アイテム
データベース db1 用ホスト db1 へのアクティブ接続
db1 の表領域 ts1 のサイズ
db1 の表領域 ts2 のサイズ
db1 の表領域 ts3 のサイズ
データベース db2 用ホスト db2 へのアクティブ接続
db2 の表領域 ts1 のサイズ
db2 の表領域 ts2 のサイズ
db2 の表領域 ts3 のサイズ
データベース db3 用ホスト db3 へのアクティブ接続
db3 の表領域 ts1 のサイズ
db3 の表領域 ts2 のサイズ
db3 の表領域 ts3 のサイズ