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以降、ローレベルディスカバリマクロでサポートされています。
キーパラメータのないアイテムのプロトタイプ
アイテムキーのパラメータを使用しない場合は、LLDマクロをitem keyのパラメータ括弧 [...] 内に配置して、パラメータとして扱われ、ディスカバリ時に置換されるようにします。
v_[{#MACRO}]
脚注
1 1 で示されたフィールドでは、単一のマクロがフィールド全体を埋める必要があります。 1つのフィールド内で複数のマクロを使用すること、またはマクロをテキストと混在させることはサポートされていません。