5 ローレベルディスカバリマクロ
概要
これは low-level discovery (LLD) 関数の中で使用されるマクロの一種です。:
{#MACRO}
LLDルールの中で使用されるマクロで、ファイルシステム名、ネットワークインターフェース、SNMP OIDなどの実数値を返します。
これらのマクロは、アイテム、トリガー、グラフの prototypes の作成に使用することができます。そして、実際の
ファイルシステムやネットワーク・インターフェイスなどを発見する際に、これらのマクロを実際の値で置き換え、
実際の item やトリガー、グラフを作成するためのベースとします。
これらのマクロは、仮想マシンdiscoveryでホストとホストグループの
prototypes を作成する際にも使用されます。
いくつかの低レベルの発見マクロはZabbixのLLD関数と一緒に "pre-packaged"として提供されています。
- {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}
ただし、custom ローレベルディスカバリルールを
作成する場合は、これらの名前に準拠することは必須ではありません。その場合は、他の任意のLLDマクロ名を使用し、
その名前を参照することができます。
サポートされるデータ型
カスタム検出ルールを定義する場合、LLDマクロのJSONオブジェクトで返されるプロパティ値は、以下のいずれかのプリミティブ型である必要があります。
- 文字列;
- 数値;
- ブール値
配列、オブジェクト、およびnull値はサポートされていません。これらの値を参照するLLDマクロは展開されず、アイテムの前処理および作成時に文字通り表示されます(例:'{#MY_MACRO}')
サポートされる箇所
以下の箇所でLLD マクロを使用することができます:
- in the low-level discovery rule filter
- for item prototypes in
- name
- key parameters
- unit
- update interval1
- history storage period1
- trend storage period1
- item value preprocessing steps
- SNMP OID
- IPMI sensor field
- calculated item formula
- SSH script and Telnet script
- database monitoring SQL query
- JMX item endpoint field
- description
- HTTP agent URL field
- HTTP agent HTTP query fields field
- HTTP agent request body field
- HTTP agent required status codes field
- HTTP agent headers field key and value
- HTTP agent HTTP authentication username field
- HTTP agent HTTP authentication password field
- HTTP agent HTTP proxy field
- HTTP agent HTTP SSL certificate file field
- HTTP agent HTTP SSL key file field
- HTTP agent HTTP SSL key password field
- HTTP agent HTTP timeout1 field
- tags
- for trigger prototypes in
- name
- operational data
- expression (only in constants and function parameters)
- URL
- description
- tags
- for graph prototypes in
- name
- for host prototypes in
- name
- visible name
- custom interface fields: IP, DNS, port, SNMP v1/v2 community, SNMP v3 context name, SNMP v3 security name, SNMP v3 authentication passphrase, SNMP v3 privacy passphrase
- host group prototype name
- host tag value
- host macro value
- (full list を参照してください。)
これらのすべての場所で、LLD マクロは静的なユーザー [macro context] (/manual/config/macros/user_macros_context) の中で使用することができます。
マクロ関数の使用
マクロ関数は、ローレベルディスカバリマクロでサポートされており (ローレベルディスカバリルールフィルターを除く)、
正規表現を使用してマクロ値の特定の部分を抽出することが可能です。
たとえば、イベントタグ付けのために、次のLLDマクロから顧客名とインターフェイス番号を抽出したい場合があります。
{#IFALIAS}=customername_1
これを行うには、regsubマクロ関数をトリガープロトタイプのイベントタグの値フィールドのマクロと一緒に
使用することができます:

引用符で囲まれていない item [key parameters] (/manual/config/items/item/key#key_parameters) にはカンマが使えないので
マクロ関数を含むパラメータは引用符で囲む必要があることに注意しましょう。パラメータ内の二重引用符をエスケープするには
バックスラッシュ (\\) 文字を使用する必要があります。
例:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
マクロ関数の構文の詳細については、Macro functions を参照してください。
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つのマクロでフィールド 全体を埋める必要があります。
フィールド内の複数のマクロや、テキストと混在するマクロはサポートされていません。