[comment]: # ({c176fd71-2d9d6e33})
# 5 ローレベルディスカバリマクロ

[comment]: # ({/c176fd71-2d9d6e33})

[comment]: # ({26d00724-bb12a85a})
#### 概要

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

```default
{#MACRO} 
```

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

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

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

[comment]: # ({/26d00724-bb12a85a})

[comment]: # ({fe3a506a-ab24d69c})
#### サポートされるデータ型

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

-   string
-   number
-   boolean

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

[comment]: # ({/fe3a506a-ab24d69c})

[comment]: # ({0f3a78fe-fc325ce1})
#### サポートされる場所

LLDマクロは以下で使用できます:

-   ローレベルディスカバリルールのフィルター内
-   ネストされたローレベルディスカバリルール内の以下
    -   JSONPath前処理パラメータ
    -   カスタムLLDマクロ用のJSONPathフィールド
-   アイテムプロトタイプおよびディスカバリプロトタイプの以下
    -   名前
    -   キーパラメータ
    -   単位
    -   更新間隔^[1](lld_macros#footnotes)^
    -   タイムアウト^[1](lld_macros#footnotes)^
    -   履歴保存期間^[1](lld_macros#footnotes)^
    -   トレンド保存期間^[1](lld_macros#footnotes)^
    -   アイテム値の前処理ステップ
    -   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プライバシーパスフレーズ
    -   ホストグループプロトタイプ名
    -   ホストタグ値
    -   ホストマクロ値
    -   （[完全な一覧](/manual/vm_monitoring/discovery_fields)を参照）

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

[comment]: # ({/0f3a78fe-fc325ce1})

[comment]: # ({eb8eceaa-5b26ab61})
#### マクロ関数の使用

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

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

```default
{#IFALIAS}=customername_1
```

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

![](../../../../assets/en/manual/config/macros/lld_macro_function.png)

引用符で囲まれていないアイテムの[key parameters](/manual/config/items/item/key#key-parameters)ではカンマは使用できないため、マクロ関数を含むパラメータは引用符で囲む必要があることに注意してください。
パラメータ内の二重引用符をエスケープするには、バックスラッシュ（`\`）文字を使用する必要があります。
例:

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

マクロ関数の構文の詳細については、[マクロ関数](/manual/config/macros/macro_functions)を参照してください。

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

[comment]: # ({/eb8eceaa-5b26ab61})

[comment]: # ({e463c54b-4ba4eb55})
##### キーパラメータのないアイテムのプロトタイプ

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

```default
v_[{#MACRO}]
```

[comment]: # ({/e463c54b-4ba4eb55})

[comment]: # ({47156e66-573cd0dc})
##### 脚注

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

[comment]: # ({/47156e66-573cd0dc})
