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中必须填满整个字段。字段中不支持多个宏或宏与文本的混合。