Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

3 ローレベルディスカバリ

概要

ローレベルディスカバリは、コンピューター上のさまざまなエンティティのアイテム、トリガー、およびグラフを自動的に作成する方法を提供します。 たとえば、Zabbixは各ファイルシステムまたはネットワークインターフェイスのアイテムを手動で作成しなくても、マシン上のファイルシステムまたはネットワークインターフェイスの監視を自動的に開始できます。 さらに、定期的に実行されるディスカバリの結果に基づいて、不要なエンティティを自動的に削除するようにZabbixを設定することができます。

ユーザーは特定のJSONプロトコルに基づいて独自のディスカバリを定義できます。

検出プロセスの一般的なアーキテクチャは次のとおりです。

まずユーザーは"設定"→ "テンプレート" → "ディスカバリ"列でディスカバリルールを作成します。 ディスカバリルールは、(1)必要なエンティティ(ファイルシステムやネットワークインターフェイスなど)を検出するアイテムと、(2)アイテムの値に基づいて作成する必要のあるアイテム、トリガー、グラフのプロトタイプで構成されます。

必要なエンティティを検出するアイテムは、他の場所で見られる通常のアイテムのようなものです。サーバーはZabbixエージェント(またはアイテムのタイプが設定されているもの)にそのアイテムの値を要求し、エージェントはテキスト値で応答します。 違いは、エージェントが応答する値には、検出されたエンティティのリストがJSON形式で含まれている必要があることです。 この形式の詳細は、カスタムディスカバリチェックの実装者にとってのみ重要ですが、戻り値にはマクロ→値のペアのリストが含まれていることを知っておく必要があります。 たとえば、アイテム"net.if.discovery"は"{#IFNAME}" → "lo"と"{#IFNAME}" → "eth0"の2つのペアを返す場合があります。

これらのマクロは、名前、キー、およびその他のプロトタイプフィールドで使用され、検出された各エンティティの実際のアイテム、トリガー、グラフ、さらにはホストを作成するために、受け取った値に置き換えられます。 ローレベルディスカバリマクロの使用についてはオプションのリストを参照してください。

サーバーは検出したアイテムの値を受け取ると、マクロ→値のペアを確認し、ペアごとにプロトタイプに基づいて実際のアイテム、トリガー、およびグラフを生成します。 上記の"net.if.discovery"の例では、サーバーはループバックインターフェイス"lo"用のアイテム、トリガー、およびグラフの1つのセットと、インターフェイス"eth0"用の別のセットを生成します。

Zabbix 4.2以降、ローレベルディスカバリルールによって返されるJSONの形式が変更されていることに注意してください。 JSONに"データ"オブジェクトが含まれることはもはや期待されていません。 ローレベルディスカバリは、JSONドキュメント内のローレベルディスカバリマクロ値へのアイテム値の前処理やカスタムパスなどの新機能をサポートするために、配列を含む通常のJSONを受け入れるようになりました。

組み込みのディスカバリキーが更新され、JSONドキュメントのルートにあるローレベルディスカバリ行の配列が返されるようになりました。 配列フィールドで{#MACRO}構文がキーとして使用されている場合、Zabbixはマクロと値を自動的に抽出します。 新しいネイティブディスカバリチェックでは"データ"要素なしで新しい構文が使用されます。 ローレベルディスカバリの値を処理する場合、最初にrootが特定されます($.または$.dataの配列)。

"data"要素はディスカバリに関連するすべてのネイティブアイテムから削除されていますが、下位互換性のためにZabbixは"data"要素を含むJSON表記を引き続き受け入れます。ですがその使用は推奨されていません。 JSONに"data"配列要素が1つしかないオブジェクトが含まれている場合、JSONPath$.dataを使用して要素のコンテンツを自動的に抽出します。 ローレベルディスカバリはJSONPath構文で指定されたカスタムパスを持つオプションのユーザー定義ローレベルディスカバリマクロを受け入れるようになりました。

上記の変更の結果、新しいエージェントは古いZabbixサーバーと連携できなくなりました。

参照:検出されたエンティティ

ローレベルディスカバリの設定

ファイルシステム検出の例に基づいて、ローレベルディスカバリについて説明します。

次の手順でディスカバリを構成します。

  • 設定テンプレートまたはホストを開く
  • 適当なテンプレートまたはホストのディスカバリ行をクリックする

  • 画面右上にあるディスカバリルールの作成をクリックする
  • ディスカバリルールフォームに必要な詳細を記入します

ディスカバリルール

ディスカバリルールフォームには、ディスカバリ中のデータフローを左から右に表す5つのタブが含まれています。

  • ディスカバリルール - 最も重要なこととして、検出されたデータを取得するための組み込みアイテムまたはカスタムスクリプトを指定します
  • 保存前処理 - 検出されたデータに前処理を適用します
  • LLDマクロ - 検出されたアイテム、トリガーなどで使用するいくつかのマクロ値を設定できます
  • フィルター - 検出された値をフィルタリングできます
  • オーバーライド - 特定の検出されたオブジェクトに適用するときに、アイテム、トリガー、グラフ、またはホストプロトタイプを変更できます。

ディスカバリルールタブには、検出に使用するアイテムキー(およびいくつかの一般的なディスカバリルール属性)が含まれています。

すべての必須入力フィールドは、赤いアスタリスクでマークされています。

パラメータ 説明
名前 ディスカバリルール名
タイプ ディスカバリを実行するためのチェックタイプ。
この例ではZabbixエージェントアイテムキーを使用しています。
アイテムによっては、ディスカバリルールを依存アイテムにすることもできます。別のディスカバリルールに依存することはできません。 依存アイテムの場合は、それぞれのタイプ(依存アイテム)を選択し、'マスターアイテム'フィールドでマスターアイテムを指定します。 マスターアイテムは実在する必要があります。
キー 検出項目キーを入力します(最大2048文字)
たとえば組み込みの"vfs.fs.discovery"アイテムキーを使用して、コンピューターに存在するファイルシステムとそのタイプのリストを含むJSONを返すことができます。
ファイルシステム検出の別のオプションは、Zabbix 4.4.5以降でサポートされている"vfs.fs.get"エージェントキーによる検出結果を使用することです(を参照)
監視間隔 このフィールドはZabbixがディスカバリを実行する頻度を指定します。 最初にファイルシステムの検出を設定するだけの場合は、短い間隔に設定することをお勧めしますが、ファイルシステムは通常あまり頻繁に変更されないため、機能することがわかったら30分以上に再設定します 。
Zabbix3.4.0以降、タイムサフィックスがサポートされています。例: 30s,1m,2h,1d
Zabbix3.4.0以降、ユーザーマクロがサポートされています。
:更新間隔はゼロ以外の値のカスタム間隔が存在する場合にのみ'0'に設定できます。更新間隔が'0'に設定され、ゼロ以外の値のカスタム間隔(フレキシブルまたはスケジュール済み)が存在する場合、アイテムはカスタム間隔の期間中にポーリングされます。
既存のディスカバリルールの場合、監視データ取得ボタンを押すと検出がすぐに実行されます。
監視間隔のカスタマイズ アイテムをチェックするためのカスタムルールを作成できます。
例外設定 - 監視間隔の例外を作成します(異なる頻度の間隔)
定期設定 - カスタムポーリングスケジュールを作成します。< br>詳細については、カスタム間隔を参照してください。 Zabbix 3.0.0以降、スケジューリングがサポートされています。
存在しなくなったリソースの保持期間 このフィールドでは、検出ステータスが"取得不可"(1時間から25年、または"0")になった後、検出されたエンティティが保持される(削除されない)期間を指定できます。<br >Zabbix3.4.0以降、 タイムサフィックスがサポートされています。例: 2h,1d
ユーザーマクロはZabbix3.4.0以降でサポートされています。
注:"0"に設定すると、 エンティティはすぐに削除されます。 フィルタを誤って編集すると、すべての履歴データとともにエンティティが削除される可能性があるため"0"の使用はお勧めしません。
説明 説明を入力します
有効 チェックするとルールが処理されます。

ディスカバリルールの履歴は保持されません。

保存前処理

保存前処理タブでは、検出結果に適用する変換ルールを定義できます。 このステップでは、1つまたは複数の変換が可能です。 変換は定義された順序で実行されます。 すべての保存前処理はZabbixサーバーによって行われます。

参照:

タイプ
トランスフォーメーション 説明
テキスト
正規表現 受信した値を<pattern>正規表現に一致させ、値を抽出した<output>に置き換えます。 正規表現は、\Nシーケンスで最大10個のキャプチャされたグループの抽出をサポートします。
パラメータ:
pattern - 正規表現
output - 出力フォーマットテンプレート。\N(N = 1…9)のエスケープシーケンスは、N番目に一致するグループに置き換えられます。\0エスケープシーケンスは一致したテキストに置き換えられます。
失敗時のカスタマイズチェックボックスをオンにすると、値を破棄、値を設定、 エラーメッセージを設定いずれかのカスタムエラー処理オプションを指定できます。
置換 検索文字列を見つけて、別の文字列に置き換え(または削除し)ます。 検索文字列のすべての出現箇所が置き換えられます。パラメーター:
search string - 検索して置換する文字列、大文字と小文字を区別(必須)
replacement - 検索文字列を置き換える文字列。 置換文字列が空の場合は見つかった検索文字列を削除します。
エスケープシーケンスを使用して、改行、キャリッジリターン、タブ、スペース "\n \r \t \s"を検索または置換することができます。 バックスラッシュは「\\」としてエスケープでき、エスケープシーケンスは"\\n"としてエスケープできます。 改行、キャリッジリターン、タブのエスケープは、ローレベルディスカバリ中に自動的に実行されます。
5.0.0以降でサポートされています。
構造化データ
JSONPath JSONPath機能を使用してJSONデータから値またはフラグメントを抽出します。
失敗時のカスタマイズチェックボックスをオンにすると、前処理ステップが失敗した場合に実行されるカスタムエラー処理オプションを指定できます。 値を破棄するか、設定する値を指定するか、設定するエラーメッセージを指定してください。
XML XPath XPath機能を使用してXMLデータから値またはフラグメントを抽出します。
このオプションを機能させるには、Zabbixサーバーをlibxmlサポートでコンパイルする必要があります。
例:
number(/ document/item/value)から10を抽出
<document><item><value>10</ value></ item></ document>
number(/document/item/@attribute)から10を抽出
<document><item attribute="10"></ item></ document>
/document/itemから<item><value>10</value></item>を抽出<document><item><value>10</ value></ item></document>
名前付けはサポートされていませんないことに注意してください。
4.4.0以降でサポートされています。
失敗時のカスタマイズチェックボックスをオンにすると、前処理ステップが失敗した場合に実行されるカスタムエラー処理オプションを指定できます。 値を破棄するか、設定する値を指定するか、設定するエラーメッセージを指定してください。
CSVからJSON CSVファイルデータをJSON形式に変換します。
詳細についてはCSVからJSONへの前処理を参照してください。
4.4.0以降でサポートされています。
XMLからJSON XML形式のデータをJSONに変換します。
詳細については、シリアル化ルールを参照してください。
失敗時のカスタマイズチェックボックスをオンにすると、カスタムエラー処理オプションを指定できます。 値を破棄するか、設定する値を指定するか、設定するエラーメッセージを指定してください。
カスタムスクリプト
JavaScript パラメータフィールドをクリックしたとき、またはクリックして表示または変更をクリックしたときに表示されるブロックにJavaScriptコードを入力します。
使用可能なJavaScriptの長さは使用するデータベースによって異なります。<br >詳細については、Javascriptの前処理を参照してください。
バリデーション
正規表現と一致しない 値が一致してはならない正規表現を指定します。
例:Error:(.*?)\.
失敗時のカスタマイズチェックボックスをオンにすると、カスタムエラー処理オプションを指定できます:値を破棄するか、指定された値を設定するか、指定されたエラーメッセージを設定します。
JSON内のエラーチェック JSONpathにあるアプリケーションレベルのエラーメッセージを確認します。 成功し、メッセージが空でない場合は処理を停止します。 それ以外の場合は、この保存前処理ステップの前の値で処理を続行します。 これらの外部サービスエラーは、保存前処理ステップ情報を追加せずに、そのままユーザーに報告されることに注意してください。
例:$.errors{"errors":"e1"}``のようなJSONを受信した場合、次の保存前処理ステップは実行されません。
*失敗時のカスタマイズ*チェックボックスをオンにすると、カスタムエラー処理オプションを指定できます。 値を破棄するか、設定する値を指定するか、設定するエラーメッセージを指定してください| |^|*XML内のエラーチェック*|xpathにあるアプリケーションレベルのエラーメッセージを確認します。 成功し、メッセージが空でない場合は処理を停止します。 それ以外の場合は、この保存前処理ステップの前の値で処理を続行します。 これらの外部サービスエラーは、保存前処理ステップ情報を追加せずに、そのままユーザーに報告されることに注意してください。
無効なXMLの解析に失敗しても、エラーは報告されません。
4.4.0以降でサポートされています。
*失敗時のカスタマイズ*チェックボックスをオンにすると、カスタムエラー処理オプションを指定できます。 値を破棄するか、設定する値を指定するか、設定するエラーメッセージを指定してください| |絞り込み|<|<| |<|*指定秒内に変化が無ければ破棄*|定義された期間(秒単位)内に値が変更されなかった場合は、値を破棄します。
秒を指定するために正の整数値がサポートされています。(最小 - 1秒) このフィールドではタイムサフィックスを使用できます。(30s,1m,2h,1d など) このフィールドではユーザーマクロとローレベルディスカバリマクロを使用できます。
ディスカバリアイテムに指定できるスロットルオプションは1つだけです。
例:
1m` 同一のテキストが60秒以内に2回このルールに渡された場合、そのテキストは破棄されます。
:アイテムのプロトタイプを変更しても、スロットリングはリセットされません。 スロットリングは保存前処理ステップが変更された場合にのみリセットされます。
Prometheus
PrometheusからJSON PrometheusメトリックをJSONに変換します。
詳細についてはPrometheusチェックを参照してください。

テンプレートを介してディスカバリルールがホストに適用されている場合、このタブのコンテンツは読み取り専用であることに注意してください。

LLDマクロ

LLDマクロタブではカスタマイズしたローレベルディスカバリマクロを指定できます。

カスタムマクロは、返されたJSONに必要なマクロがまだ定義されていない場合に役立ちます。 例:

  • ファイルシステム検出用のネイティブのvfs.fs.discoveryキーは{#FSNAME}、{#FSTYPE}などの事前定義されたLLDマクロを含むJSONを返します。 これらのマクロは、アイテムで使用でき、プロトタイプをトリガーします(ページの後続のセクションを参照)。 カスタムマクロを定義する必要はありません。
  • vfs.fs.getエージェントアイテムはファイルシステムデータを含むJSONを返しますが、事前定義されたLLDマクロはありません。 この場合マクロを自分で定義し、JSONPathを使用してJSONの値にマップすることができます。

抽出された値は、ディスカバリアイテム、トリガーなどで使用できます。値は、検出の結果とこれまでの前処理ステップから抽出されることに注意してください。

パラメータ 説明
LLDマクロ 次の構文を使用したローレベルディスカバリマクロの名前:{#MACRO}
JSONPath JSONPath構文を使用してLLD行からLLDマクロ値を抽出するために使用されるパス。
たとえば、 $.fooはこのJSONから"bar"と"baz"を抽出します:[{"foo":"bar"}、{"foo":"baz"}]
返されたJSONから抽出された値は、アイテム、トリガーなどのプロトタイプフィールドのLLDマクロを置き換えるために使用されます。
JSONPathはドット表記またはブラケット表記を使用して指定できます。$['unicode + special chars#1']['unicode + special chars#2']のように、特殊文字やUnicodeの場合は、角かっこ表記を使用する必要があります。

フィルター

フィルタを使用して、条件に一致するエンティティのアイテム、トリガー、およびグラフを生成できます。フィルタータブには、検出値をフィルター処理できる検出ルールフィルター定義が含まれています。

パラメータ 説明
計算のタイプ フィルタを計算するための次のオプションを使用できます。
And - すべてのフィルタに合格する必要があります;
Or - 1つのフィルタに合格すれば十分です;
** And/Or ** - 異なるマクロ名でAndを使用し、同じマクロ名でOrを使用します;
カスタム条件式 - フィルターのカスタム計算を定義します。 数式にはリスト内のすべてのフィルターが含まれている必要があります。 255シンボルに制限されています。
フィルター 次のフィルター条件演算子を使用できます。一致する一致しない存在する存在しない
一致するおよび一致しない演算子は、Perl互換正規表現(PCRE)を受け付けます。たとえばC:,D:,およびE:ファイルシステムのみに関心がある場合、{#FSNAME}を"マクロ"に、"^C|^D|^E"を"正規表現"に入れることで実現できます。
フィルタリングは、{#FSTYPE}マクロを使用するファイルシステムタイプ(例:"^ext|^reiserfs")および(Windowsエージェントのみでサポートされる){#FSDRIVETYPE}マクロを使用するドライブタイプ(例:"fixed")
[正規表現]フィールドに正規表現を入力するか、グローバル正規表現を参照できます。
正規表現のテストには"grep -E"を使用できます。たとえば、次のようになります。for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo "SKIP: $f"; done

Windowsの{#FSDRIVETYPE}マクロはZabbix3.0.0以降でサポートされています。

存在するおよび存在しない演算子を使用すると、応答内の指定されたLLDマクロの有無に基づいてエンティティをフィルタリングできます(バージョン5.4.0以降でサポートされています)
Zabbix ** 2.4.0 **以降、複数のフィルターの定義がサポートされています。
フィルターのマクロが応答にない場合、このマクロに存在しない条件が指定されていない限り、見つかったエンティティは無視されることに注意してください。

LLDルールで使用される正規表現の誤りまたはタイプミス(たとえば誤った"ファイルシステムディスカバリ"正規表現)により、多くのホストの数千の構成要素、履歴値、およびイベントが削除される可能性があります。

大文字と小文字を区別するファイルシステム名を正しく検出するためには、MySQLのZabbixデータベースを大文字と小文字を区別するように作成する必要があります。

オーバーライド

オーバーライドタブでは、アイテム、トリガー、グラフ、ホストのプロトタイプのリスト、または特定の条件を満たす検出されたオブジェクトの属性をルールに基づいて変更できます。

オーバーライドは、(存在する場合)並べ替え可能なドラッグアンドドロップリストに表示され、定義された順序で実行されます。 新しいオーバーライドの詳細を構成するには、オーバーライドブロックの をクリックします。既存のオーバーライドを編集するには、オーバーライド名をクリックすると、 ポップアップウィンドウが開き、オーバーライドルールの詳細を編集できます。

必須パラメーターは赤いアスタリスクでマークされています。

パラメータ 説明
名前 一意の(LLDルールごとの)オーバーライド名
フィルターが一致した場合 フィルタ条件が満たされたときに次のオーバーライドを処理するかどうかを設定します。
上書きを続行 - 後続のオーバーライドが処理されます。
処理の停止 - 先行する操作(存在する場合)およびこのオーバーライドは実行されると、一致したLLD行の後続のオーバーライドは実行されません。
フィルター 検出されたエンティティにオーバーライドを適用する必要があるかどうかを決定します。 オーバーライドフィルターは、ディスカバリルールフィルターの後に処理されます。
実行内容 オーバーライド操作は、次の詳細とともに表示されます。
トリガー条件式 - オブジェクト(アイテムのプロトタイプ/トリガーのプロトタイプ/グラフのプロトタイプ/ホストプロトタイプ)およびトリガー条件式(等しい/等しくない/含む/含まない/一致する/一致しない)
アクション - 実行内容を変更または削除するためのリンクが表示されます。

実行内容の設定

新しい実行内容を設定するには、実行内容ブロックのをクリックします。 既存の実行内容を編集するには各実行内容のをクリックすると詳細を編集できるポップアップウィンドウが開きます。

パラメータ 説明
オブジェクト 次の4種類のオブジェクトを使用できます。
アイテムのプロトタイプ
トリガーのプロトタイプ
グラフのプロトタイプ
ホストプロトタイプ
トリガー条件式 操作を適用する必要があるエンティティをフィルタリングします。
条件式 サポートされている条件:
等しい - パターンと等しいプロトタイプに適用
等しくない - パターンと等しくないプロトタイプに適用
含む - プロトタイプ名に文字列パターンが含まれる場合に適用
含まない - プロトタイプ名に文字列パターンが含まれていない場合は適用
一致する - プロトタイプ名がパターン内の正規表現と一致する場合は適用します
一致しない - プロトタイプ名がパターン内の正規表現と一致しない場合に適用
パターン 正規表現または検索する文字列
オブジェクト:アイテムのプロトタイプ
自動生成時のステータス有効 チェックボックスをオンにするとボタンが表示され、元のアイテムのプロトタイプ設定を上書きできます。
はい - アイテムは有効な状態で追加されます。
いいえ - アイテムは検出されたエンティティに追加されますが、無効な状態になります。
ディスカバリ チェックボックスをオンにするとボタンが表示され、元のアイテムのプロトタイプ設定を上書きできます。
はい - アイテムが追加されます。
いいえ - アイテムは追加されません。
監視間隔 チェックボックスをオンにすると2つのオプションが表示され、アイテムに異なる監視間隔を設定できます。
間隔 - アイテムの更新間隔。 ユーザーマクロおよびタイムサフィックス(例:30s,1m,2h,1d)がサポートされています。 監視間隔のカスタマイズを使用する場合は0に設定する必要があります。
監視間隔のカスタマイズ - をクリックして、柔軟なスケジュール間隔を指定します。 詳細については、監視間隔のカスタマイズを参照してください。
ヒストリの保存期間 チェックボックスをオンにするとボタンが表示され、異なるヒストリの保存期間を設定できます。
ヒストリを保存しない - ヒストリは保存されません。
保存期間 - 選択すると保存期間を指定するための入力フィールドが右側に表示されます。 ユーザーマクロLLDマクロがサポートされています。
トレンドの保存期間 チェックボックスをオンにするとボタンが表示され、異なるトレンドの保存期間を設定できます。
トレンドを保存しない - トレンドは保存されません。
保存期間 - 選択すると保存期間を指定するための入力フィールドが右側に表示されます。 ユーザーマクロLLDマクロがサポートされています。
タグ チェックボックスをオンにすると新しいブロックが表示され、タグと値のペアを指定できます。
これらのタグはタグ名が一致していても、アイテムのプロトタイプで指定されたタグに追加されます。
オブジェクト:トリガーのプロトタイプ
自動生成時のステータス有効 チェックボックスをオンにするとボタンが表示され、元のトリガーのプロトタイプ設定を上書きできます。
はい - トリガーは有効な状態で追加されます。
いいえ - トリガーは検出されたエンティティに追加されますが、無効な状態になります。
ディスカバリ チェックボックスをオンにすると、ボタンが表示され、元のトリガーのプロトタイプ設定を上書きできます。
はい - トリガーが追加されます。
いいえ - トリガーは追加されません。
深刻度 チェックボックスをオンにするとトリガーの深刻度ボタンが表示され、深刻度を変更できます。
タグ チェックボックスをオンにすると新しいブロックが表示され、タグと値のペアを指定できます。
これらのタグはタグ名が一致していても、トリガープロトタイプで指定されたタグに追加されます。
オブジェクト:グラフのプロトタイプ
ディスカバリ チェックボックスをオンにするとボタンが表示され、元のグラフのプロトタイプ設定を上書きできます。
はい - グラフが追加されます。
いいえ - グラフは追加されません。
オブジェクト:ホストプロトタイプ
自動生成時のステータス有効 チェックボックスをオンにするとボタンが表示され、元のホストプロトタイプ設定を上書きできます。
はい - ホストは有効な状態で追加されます。
いいえ - ホストは無効な状態で追加されます。
ディスカバリ チェックボックスをオンにするとボタンが表示され、元のホストプロトタイプ設定を上書きできます。
はい - ホストが検出されます。
いいえ - ホストは検出されません。
テンプレートをリンク チェックボックスをオンにするとテンプレートを指定するための入力フィールドが表示されます。 テンプレート名を入力するか、フィールドの横にある選択をクリックして、ポップアップウィンドウのリストからテンプレートを選択します。
ホストプロトタイプにリンクされているすべてのテンプレートは、このオーバーライドのテンプレートに置き換えられます。
タグ チェックボックスをオンにすると、新しいブロックが表示され、タグと値のペアを指定できます。
これらのタグは、タグ名が一致していても、ホストプロトタイプで指定されたタグに追加されます。
ホストインベントリ チェックボックスをオンにするとボタンが表示され、ホストプロトタイプの別のインベントリモードを選択できます。
無効 - ホストインベントリにデータを入力しない
マニュアル - 詳細を手動で入力します
自動 - 収集されたメトリックに基づいてホストインベントリデータを自動入力します。

フォームボタン

フォームの下部にあるボタンを使用すると、いくつかの操作を実行できます。

ディスカバリルールを追加します。 このボタンは新しいディスカバリルールでのみ使用できます。
ディスカバリルールのプロパティを更新します。 このボタンは既存のディスカバリルールでのみ使用できます。
現在のディスカバリルールのプロパティに基づいて、別のディスカバリルールを作成します。
ディスカバリルールに基づいて検出をすぐに実行します。 ディスカバリルールはすでに存在している必要があります。詳細を参照してください。
すぐに検出を実行すると、設定キャッシュは更新されないため、結果にはディスカバリルール設定の最近の変更が反映されません。
ディスカバリルールを削除します。
ディスカバリルールのプロパティ編集をキャンセルします。

検出されたエンティティ

以下のスクリーンショットは、検出されたアイテム、トリガー、およびグラフがホストの構成でどのように見えるかを示しています。 検出されたエンティティには、元のディスカバリルールへのオレンジ色のリンクがプレフィックスとして付けられます。

同じキーのアイテムや同じ名前のグラフなど、同じ一意性基準を持つ既存のエンティティがすでに存在する場合、検出されたエンティティは作成されないことに注意してください。この場合、フロントエンドにローレベルディスカバリルールが特定のエンティティを作成できなかったことを示すエラーメッセージが表示されます。ただ、一部のエンティティを作成できずにスキップする必要があったためであり、ディスカバリルール自体がサポートされなくなることはありません。 ディスカバリルールは、他のエンティティの作成/更新を続行します。

ローレベルディスカバリルールによって作成されたアイテム(同様に、トリガーとグラフ)は、検出されたエンティティ(ファイルシステム、インターフェイスなど)が検出されなくなった場合(またはフィルターを通過しなくなった場合)、アイテム、トリガー、およびグラフは存在しなくなったリソースの保持期間フィールドで定義された日数が経過するとに自動的に削除されます。

検出されたエンティティが「もう検出されていません」になると、アイテムリストに有効期間インジケータが表示されます。 マウスポインタをその上に移動すると、アイテムが削除されるまでの残り日数を示すメッセージが表示されます。

エンティティに削除のマークが付けられているが、予定された時間に削除されなかった場合(無効なディスカバリルールまたはアイテムホスト)次にディスカバリルールが処理されるときにエンティティは削除されます。

削除のマークが付けられている他のエンティティを含むエンティティは、ディスカバリルールレベルで変更されても更新されません。 たとえば、LLDベースのトリガーには、削除のマークが付けられたアイテムが含まれている場合、更新されません。

他のタイプの検出

次のセクションでは、他のタイプのすぐに使用可能な検出の詳細とハウツーを利用できます。

検出項目のJSON形式の詳細と、独自のファイルシステム検出器をPerlスクリプトとして実装する方法の例については、カスタムLLDルールの作成.を参照してください。

カスタムLLDルールの作成

データベース サーバー上のデータベースなど、あらゆる種類のエンティティを検出ための、完全カスタムの LLD ルールを作成することもできます。

そのためには、JSON を返すカスタム アイテムを作成し、見つかったオブジェクトとオプションでそれらのプロパティを指定する必要があります。 エンティティごとのマクロ数に制限はありません。組み込みのディスカバリルールは 1 つまたは 2 つのマクロ (たとえば、ファイル システム検出の場合は 2 つ) を返しますが、さらに多くのマクロを返すこともできます。

必要なJSON形式を例題で説明します。 古いZabbix1.8エージェント("vfs.fs.discovery"をサポートしていないエージェント)を実行しているが、ファイルシステムを検出する必要があるとします。以下はマウントされたファイルシステムを検出し、ファイルシステム名とタイプの両方を含むJSONを出力するLinux用の単純なPerlスクリプトです。 これを使用する方法の1つは、キー"vfs.fs.discovery_perl"を持つUserParameterとして実行することです。

#!/usr/bin/perl
       
       $first = 1;
       
       print "[\n";
       
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
       
           print "\t,\n" if not $first;
           $first = 0;
       
           print "\t{\n";
           print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
           print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
           print "\t}\n";
       }
       
       print "]\n";

LLD マクロ名に使用できる記号は0-9A-Z_.です。 名前に小文字は使用できません。

出力例(わかりやすくするために再フォーマットされています)を以下に示します。 カスタム検出チェックの JSON は、同じ形式に従う必要があります。

[
           { "{#FSNAME}":"/",                           "{#FSTYPE}":"rootfs"   },
           { "{#FSNAME}":"/sys",                        "{#FSTYPE}":"sysfs"    },
           { "{#FSNAME}":"/proc",                       "{#FSTYPE}":"proc"     },
           { "{#FSNAME}":"/dev",                        "{#FSTYPE}":"devtmpfs" },
           { "{#FSNAME}":"/dev/pts",                    "{#FSTYPE}":"devpts"   },
           { "{#FSNAME}":"/lib/init/rw",                "{#FSTYPE}":"tmpfs"    },
           { "{#FSNAME}":"/dev/shm",                    "{#FSTYPE}":"tmpfs"    },
           { "{#FSNAME}":"/home",                       "{#FSTYPE}":"ext3"     },
           { "{#FSNAME}":"/tmp",                        "{#FSTYPE}":"ext3"     },
           { "{#FSNAME}":"/usr",                        "{#FSTYPE}":"ext3"     },
           { "{#FSNAME}":"/var",                        "{#FSTYPE}":"ext3"     },
           { "{#FSNAME}":"/sys/fs/fuse/connections",    "{#FSTYPE}":"fusectl"  }
       ]

前の例では、キーがプロトタイプで使用される LLD マクロ名と一致する必要があります。 別の方法としては、JSONPath{#FSNAME}$.fsname および {#FSTYPE}$.fstype を使用して LLD マクロ値を抽出することです。次のようなスクリプトでそれを可能にします:

#!/usr/bin/perl
        
       $first = 1;
        
       print "[\n";
        
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
        
           print "\t,\n" if not $first;
           $first = 0;
        
           print "\t{\n";
           print "\t\t\"fsname\":\"$fsname\",\n";
           print "\t\t\"fstype\":\"$fstype\"\n";
           print "\t}\n";
       }
        
       print "]\n";

出力例(わかりやすくするために再フォーマットされています)を以下に示します。 カスタム検出チェックの JSON は、同じ形式に従う必要があります。

[
           { "fsname":"/",                           "fstype":"rootfs"   },
           { "fsname":"/sys",                        "fstype":"sysfs"    },
           { "fsname":"/proc",                       "fstype":"proc"     },
           { "fsname":"/dev",                        "fstype":"devtmpfs" },
           { "fsname":"/dev/pts",                    "fstype":"devpts"   },
           { "fsname":"/lib/init/rw",                "fstype":"tmpfs"    },
           { "fsname":"/dev/shm",                    "fstype":"tmpfs"    },
           { "fsname":"/home",                       "fstype":"ext3"     },
           { "fsname":"/tmp",                        "fstype":"ext3"     },
           { "fsname":"/usr",                        "fstype":"ext3"     },
           { "fsname":"/var",                        "fstype":"ext3"     },
           { "fsname":"/sys/fs/fuse/connections",    "fstype":"fusectl"  }
       ]

次にディスカバリルールの[フィルタ]フィールドで、"{#FSTYPE}"をマクロとして指定し、正規表現として"rootfs|ext3"を指定します。

カスタムLLDルールでマクロ名FSNAME/FSTYPEを使用する必要はありません。好きな名前を自由に使用できます。 JSONPathが使用されている場合、LLD行はオブジェクトになることができる配列要素になりますが、別の配列または値にすることもできます。

ユーザーパラメータを使用する場合、戻り値は512KBに制限されることに注意してください。 詳細についてはLLD戻り値のデータ制限を参照してください。