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マクロは、以下で使用できます。
- ローレベルディスカバリルールのフィルター内
- アイテムプロトタイプおよびディスカバリプロトタイプの以下の項目
- 名前
- キーパラメータ
- 単位
- 更新間隔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 マクロ関数を使用できます。

引用符で囲まれていないアイテムのkeyパラメータではカンマを使用できないため、マクロ関数を含むパラメータは引用符で囲む必要があります。
パラメータ内の二重引用符をエスケープするには、バックスラッシュ(\)文字を使用してください。
例:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
マクロ関数の構文の詳細については、マクロ関数を参照してください。
マクロ関数は、Zabbix 4.0以降、ローレベルディスカバリマクロでサポートされています。
キーパラメータのないアイテムのプロトタイプ
アイテムキーのパラメータを使用しない場合は、LLDマクロをitem keyのパラメータ括弧 [...] 内に配置して、パラメータとして扱われ、ディスカバリ中に置換されるようにします。
v_[{#MACRO}]
脚注
1 で示されたフィールドでは、単一のマクロがフィールド全体を満たしている必要があります。 1つのフィールド内で複数のマクロを使用すること、またはマクロをテキストと混在させることはサポートされていません。