ローレベルディスカバリマクロ

概要

ローレベルディスカバリ (LLD) 機能内で使用されるマクロの種類があります:

{#MACRO} 

これはLLDルールで使用されるマクロで、ファイルシステム名、ネットワークインターフェース、SNMP OIDなどの実際の値を返します。

これらのマクロは、エンティティのプロトタイプ(アイテム、トリガー、グラフ、LLDルール、ホスト、ホストグループのプロトタイプ)の作成に使用できます。
実際のファイルシステム、ネットワークインターフェース、仮想マシン などのディスカバリ時に、これらのマクロは実際の値に置き換えられ、実際のエンティティを作成するための基礎となります。

一部のローレベルディスカバリマクロは、Zabbix のLLD機能にあらかじめ含まれています - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}。
ただし、カスタム ローレベルディスカバリルールを作成する際に、これらの名前に従う必要はありません。
その場合は、他の任意のLLDマクロ名を使用し、その名前を参照できます。

サポートされるデータ型

カスタムディスカバリルールを定義する場合、LLDマクロ用のJSONオブジェクトで返されるプロパティ値は、次のプリミティブ型のいずれかである必要があります。

  • string
  • number
  • boolean

配列、オブジェクト、null値はサポートされていません。 このような値を参照するLLDマクロは展開されないままとなり、アイテムの前処理および作成時にそのままの文字列(例: '{#MY_MACRO}')として表示されます。

使用可能な場所

LLDマクロは、次の場所で使用できます。

  • ローレベルディスカバリルールのフィルター
  • ネストされたローレベルディスカバリルールの以下の項目
    • JSONPath前処理パラメータ
    • カスタムLLDマクロのJSONPathフィールド
  • アイテムのプロトタイプおよびディスカバリのプロトタイプの以下の項目
    • 名前
    • キーパラメータ
    • 単位
    • 更新間隔1
    • タイムアウト1
    • ヒストリ保存期間1
    • トレンド保存期間1
    • アイテム値の前処理ステップ
    • SNMP OID
    • IPMIセンサーフィールド
    • 計算アイテム/集計アイテムの式の以下の項目
      • 式の定数および関数パラメータ
      • アイテムのキーパラメータ
    • 集計アイテムのフィルター条件(ホストグループ名およびタグ名)
    • SSHスクリプトおよびTelnetスクリプト
    • データベース監視のSQLクエリ
    • JMXアイテムのエンドポイントフィールド
    • 説明
    • HTTPエージェントのURLフィールド
    • HTTPエージェントのHTTPクエリフィールド
    • HTTPエージェントのリクエストボディフィールド
    • HTTPエージェントの必須ステータスコードフィールド
    • HTTPエージェントのヘッダーのキーおよび値
    • HTTPエージェントのHTTP認証ユーザー名フィールド
    • HTTPエージェントのHTTP認証パスワードフィールド
    • HTTPエージェントのHTTPプロキシフィールド
    • HTTPエージェントのHTTP SSL証明書ファイルフィールド
    • HTTPエージェントのHTTP SSLキーファイルフィールド
    • HTTPエージェントのHTTP SSLキーパスワードフィールド
    • タグ
  • トリガーのプロトタイプの以下の項目
    • 名前
    • 障害時の情報
    • 式(定数および関数パラメータ内のみ)
    • URL
    • 説明
    • タグ
  • グラフのプロトタイプの以下の項目
    • 名前
  • ホストのプロトタイプの以下の項目
    • 名前
    • 表示名
    • カスタムインターフェースフィールド: IP、DNS、ポート、SNMPv1/SNMPv2コミュニティ、SNMPv2/SNMPv3最大繰り返し回数、SNMPv1/SNMPv2/SNMPv3再試行回数、SNMPv3コンテキスト名、SNMPv3セキュリティ名、SNMPv3認証パスフレーズ、SNMPv3プライバシーパスフレーズ
    • ホストグループのプロトタイプ名
    • ホストタグの値
    • ホストマクロの値
    • (完全な一覧を参照)

ローレベルディスカバリルールのフィルターを除き、これらすべての場所で、LLDマクロは静的なユーザーマクロコンテキスト内で使用できます。

マクロ関数の使用

マクロ関数はローレベルディスカバリマクロでサポートされています(ローレベルディスカバリルールのフィルターを除く)。これにより、正規表現を使用してマクロ値の特定の部分を抽出できます。

たとえば、イベントタグ付けのために、次の LLD マクロから顧客名とインターフェース番号を抽出したい場合があります。

{#IFALIAS}=customername_1

これを行うには、トリガープロトタイプのイベントタグ値フィールドで、マクロとともに regsub マクロ関数を使用します。

引用符で囲まれていないアイテムのkey パラメータではコンマを使用できないため、マクロ関数を含むパラメータは引用符で囲む必要があります。 パラメータ内の二重引用符をエスケープするには、バックスラッシュ(\)文字を使用してください。 例:

net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]

マクロ関数の構文の詳細については、マクロ関数を参照してください。

マクロ関数は Zabbix 4.0 以降、ローレベルディスカバリマクロでサポートされています。

キーパラメータのないアイテムのプロトタイプ

アイテムキーのパラメータを使用しない場合は、LLDマクロをitem keyのパラメータ括弧 [...] 内に配置して、パラメータとして扱われ、ディスカバリ時に置換されるようにします。

v_[{#MACRO}]
脚注

1 1 で示されたフィールドでは、単一のマクロがフィールド全体を埋める必要があります。 1つのフィールド内で複数のマクロを使用すること、またはマクロをテキストと混在させることはサポートされていません。