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

概要

低レベルディスカバリ(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、ポート、SNMP v1/v2コミュニティ、 SNMP v3コンテキスト名、SNMP v3セキュリティ名、SNMP v3認証パスフレーズ、SNMP v3プライバシーパスフレーズ
    • ホストグループプロトタイプ名
    • ホストタグ値
    • ホストマクロ値
    • (完全なリストを参照)

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

マクロ関数の使用

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

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

{#IFALIAS}=customername_1

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

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

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

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

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

Item prototypes with no key parameters

Some item types (for example Zabbix trapper and Simple checks) do not expose regular key parameters in the same way as agent items. When creating an item prototype for such types, place the LLD macro inside the item key parameter brackets [...] so it is treated as a parameter and substituted during discovery:

v_[{#MACRO}]
脚注

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