4 低级别发现宏
概述
有一种在 低级别自动发现 函数中使用的宏:
{#MACRO}
它是一个在低级别发现规则中使用的宏,其返回文件系统名称、网络接口和SNMP OIDs等的真实值。
这些宏可以用于创建监控项、触发器和图形原型。然后,当发现真实的文件系统、网络接口等时,这些宏将被替换为真实的值,并且以这些值来创建真实的监控项、触发器和图形。
这些宏还用于在虚拟机 自动发现 中创建主机和主机组原型。
一些低级别发现宏在 Zabbix 中是已经预先内置了的,例如 {#FSNAME}、{#FSTYPE}、{#IFNAME}、{#SNMPINDEX}、{#SNMPVALUE} 这些宏。但是,在创建 自定义 低级别发现规则的时候,遵守这些宏名称并不是强制性的。所以,你可以使用任何其他的低级别发现宏名称并引用该名称。
可支持的位置
低级别发现宏可以用在:
- 在低级别规则过滤器中
- 用于监控项原型中:
- names
- key parameters
- units
- update intervals
- history storage periods
- trend storage periods
- SNMP OIDs
- IPMI sensor fields
- calculated item formulas
- SSH and Telnet scripts
- database monitoring SQL queries
- JMX item endpoint fields
- descriptions
- 从Zabbix 4.0开始,也适用于:
- 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 field
<!-- -->
- 用于触发器原型中:
- names
- operational data
- expressions(仅用于常量和函数参数中)
- URLs
- descriptions
- event tag names and values
<!-- -->
- 用于图形原型中:
- names
<!-- -->
- 用于主机原型中:
- names
- visible names
- host group prototype names
- host macro value
- (详细查阅 完整列表)
在上述所有位置,低级别发现宏都可以在静态用户 宏上下文 中使用。
使用宏函数
宏函数支持低级别发现的宏(除了在低级别发现规则过滤器中),允许使用正则表达式提取宏值的特定部分。
比如,您可能希望从以下低级别发现宏中提取客户名称和接口编号,以便进行事件标记:
{#IFALIAS}=customername_1
为此,regsub宏函数可以与触发器原型的事件标记值字段中的宏一起使用:

注意, 在未加引号的监控项
键值参数
中不允许使用逗号, 因此,包含宏函数的参数必须用引号括起来。
反斜杠(\)字符用作于转义参数内的双引号。 例如:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
有关宏函数语法的更多信息,请参考:宏函数
从Zabbix 4.0开始,低级别发现宏就支持宏函数了。
脚注
1 在标记为单个宏的字段1中必须填满整个字段。字段中不支持多个宏或宏与文本的混合。