manual:config:macros:lld_macros

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
Last revision Both sides next revision
manual:config:macros:lld_macros [2019/10/07 06:35]
manual:config:macros:lld_macros [2020/03/31 10:41]
marinagen backslash in macro functions in key parameters
Line 1: Line 1:
 +==== 3 Low-level discovery macros ====
  
 +=== Overview ===
 +
 +There is a type of macro used within the [[manual:​discovery:​low_level_discovery|low-level discovery]] (LLD) function:
 +
 +  {#​MACRO} ​
 +
 +It is a macro that is used in an LLD rule and returns real values of file system names, network interfaces and SNMP OIDs.
 +
 +These macros can be used for creating item, trigger and graph //​prototypes//​. Then, when discovering real file systems, network interfaces etc., these macros are substituted with real values and are the basis for creating real items, triggers and graphs.
 +
 +These macros are also used in creating host and host group //​prototypes//​ in virtual machine [[:​manual/​vm_monitoring#​host_prototypes|discovery]].
 +
 +Some low-level discovery macros come "​pre-packaged"​ with the LLD function in Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#​SNMPINDEX},​ {#​SNMPVALUE}. However, adhering to these names is not compulsory when creating a [[manual:​discovery:​low_level_discovery#​creating_custom_lld_rules|custom]] low-level discovery rule. Then you may use any other LLD macro name and refer to that name.
 +
 +=== Supported locations ===
 +
 +LLD macros can be used:
 +
 +  * in the low-level discovery rule filter
 +  * for item prototypes in
 +    * names
 +    * key parameters
 +    * units
 +    * update intervals<​sup>​[[lld_macros#​footnotes|1]]</​sup>​
 +    * history storage periods<​sup>​[[lld_macros#​footnotes|1]]</​sup>​
 +    * trend storage periods<​sup>​[[lld_macros#​footnotes|1]]</​sup>​
 +    * SNMP OIDs
 +    * IPMI sensor fields
 +    * calculated item formulas
 +    * SSH and Telnet scripts
 +    * database monitoring SQL queries
 +    * JMX item endpoint fields
 +    * descriptions
 +    * since Zabbix 4.0 also in:
 +      * item value preprocessing steps
 +      * 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 timeout<​sup>​[[lld_macros#​footnotes|1]]</​sup>​ field
 +  * for trigger prototypes in
 +    * names
 +    * expression (only in constants and function parameters)
 +    * URLs
 +    * descriptions
 +    * event tag names and values
 +  * for graph prototypes in
 +    * names
 +  * for host prototypes in
 +    * names
 +    * visible names
 +    * host group prototype names
 +    * (see the [[:​manual/​vm_monitoring/​discovery_fields|full list]])
 +
 +In all those places LLD macros can be used inside user [[:​manual/​config/​macros/​usermacros#​user_macro_context|macro context]].
 +
 +=== Using macro functions ===
 +
 +Macro functions are supported with low-level discovery macros (except in low-level discovery rule filter), allowing to extract a certain part of the macro value using a regular expression.
 +
 +For example, you may want to extract the customer name and interface number from the following LLD macro for the purposes of event tagging:
 +
 +  {#​IFALIAS}=customername_1
 +
 +To do so, the ''​regsub''​ macro function can be used with the macro in the event tag value field of a trigger prototype:
 +
 +{{:​manual:​config:​macros:​lld_macro_function.png|}}
 +
 +Note, that commas are not allowed in unquoted item [[:​manual/​config/​items/​item/​key#​key_parameters|key parameters]],​ so the parameter containing a macro function has to be quoted. The backslash (''​\''​) character can be used to escape double quotes inside the parameter. Example:
 +  net.if.in["​{{#​IFALIAS}.regsub(\"​(.*)_([0-9]+)\",​ \1)}",​bytes]
 +
 +
 +For more information on macro function syntax, see: [[:​manual/​config/​macros/​macro_functions|Macro functions]]
 +
 +Macro functions are supported in low-level discovery macros since Zabbix 4.0.
 +
 +
 +== Footnotes ==
 +
 +<​sup>​**1**</​sup>​ In the fields marked with <​sup>​[[lld_macros#​footnotes|1]]</​sup>​ a single macro has to fill the whole field. Multiple macros in a field or macros mixed with text are not supported.