これは開発版のドキュメントを表示しています。内容が不完全な場合があります。
このページには自動翻訳されたコンテンツが含まれています。 誤りを見つけた場合は、その箇所を選択して Ctrl+Enter を押し、編集者に報告してください。

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

概要

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

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

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

設定

ディスカバリープロトタイプを作成するには:

  • 既存のディスカバリールールの行でディスカバリープロトタイプをクリックします

  • ディスカバリープロトタイプの作成をクリックします

このフォームの設定フィールドは、通常のローレベルディスカバリと共通です。

開いたディスカバリープロトタイプフォームでタイプに「ネスト」を選択すると、ディスカバリールール(ディスカバリープロトタイプから)は、親ディスカバリールールと同じJSON値からのJSONオブジェクトに基づいて生成されます。たとえば、元のJSONが[<object A>, <object B>]で、1つのネストされたディスカバリールールプロトタイプがある場合、オブジェクトAとオブジェクト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. このホストのために、データベースとテーブルスペースの検出という名前のLLDルールを作成します。

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

  4. このルールのアイテムプロトタイプを{#DB}のアクティブ接続数(タイプ:エージェント、キー:db.connections[{#DB}])という名前で追加します。

  5. 各データベースに関連するアイテムが検出されます:

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

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

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

  4. このディスカバリープロトタイプのアイテムプロトタイプを{#DB}の{#TSNAME}テーブルスペースのサイズ(タイプ:エージェント、キー: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. このテンプレートにActive connections to {#DB}という名前のアイテム(タイプ: エージェント、キー: db.connections[{#DB}])を作成します。

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

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

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

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

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

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

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

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

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

  13. 検出されたホストには、それぞれのデータベースおよびそのテーブルスペースに関連する検出されたアイテムが含まれます:

ホスト アイテム
Host for database db1 Active connections to db1
Size of tablespace ts1 for db1
Size of tablespace ts2 for db1
Size of tablespace ts3 for db1
Host for database db2 Active connections to db2
Size of tablespace ts1 for db2
Size of tablespace ts2 for db2
Size of tablespace ts3 for db2
Host for database db3 Active connections to db3
Size of tablespace ts1 for db3
Size of tablespace ts2 for db3
Size of tablespace ts3 for db3