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 agentのURLフィールド
- HTTP agentのHTTPクエリフィールド
- HTTP agentのリクエスト本文フィールド
- HTTP agentの必要なステータスコードフィールド
- HTTP agentのヘッダーフィールドのキーと値
- HTTP agentのHTTP認証ユーザーフィールド
- HTTP agentのHTTP認証パスワードフィールド
- HTTP agentのHTTPプロキシフィールド
- HTTP agentのHTTP SSL証明書ファイルフィールド
- HTTP agentのHTTP SSLキーファイルフィールド
- HTTP agentのHTTP SSLキーパスワードフィールド
- タグ
- トリガープロトタイプの以下の項目で
- 名前
- 運用データ
- 式(定数と関数パラメータ内のみ)
- URL
- 説明
- タグ
- グラフプロトタイプの以下の項目で
- 名前
- ホストプロトタイプの以下の項目で
- 名前
- 表示名
- カスタムインターフェースフィールド: IP、DNS、ポート、SNMP v1/v2コミュニティ、SNMP v3コンテキスト名、SNMP v3セキュリティ名、SNMP v3認証パスフレーズ、SNMP v3プライバシーパスフレーズ
- ホストグループプロトタイプ名
- ホストタグ値
- ホストマクロ値
- (全一覧を参照)
これらすべての場所で、ローレベルディスカバリルールのフィルターを除き、LLDマクロは静的なユーザーマクロコンテキスト内でも使用できます。
マクロ関数の使用
マクロ関数はローレベルディスカバリマクロでサポートされています(ローレベルディスカバリルールのフィルターを除く)。これにより、正規表現を使用してマクロ値の特定の部分を抽出できます。
例えば、イベントタグ付けのために、次のLLDマクロから顧客名とインターフェース番号を抽出したい場合があります。
{#IFALIAS}=customername_1
これを行うには、トリガープロトタイプのイベントタグ値フィールドで、マクロに対して regsub マクロ関数を使用できます。

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