4 低级发现宏
概述
在low-level discovery(LLD)功能中使用了一类宏:
{#MACRO}
这是一种用于LLD规则的宏,可返回file系统名称、网络接口、SNMP OID等的实际值。
这些宏可用于创建监控项、触发器和图形原型。当发现实际的file系统、网络接口等时,这些宏会被替换为实际值,并成为创建真实监控项、触发器和图形的基础。
这些宏还用于在虚拟机主机原型中创建主机和主机组原型。
Zabbix中部分低级发现宏已与LLD功能"预打包"——{#FSNAME}、{#FSTYPE}、{#IFNAME}、{#SNMPINDEX}、{#SNMPVALUE}。但在创建custom低级发现规则时,并不强制要求使用这些名称。您可以使用任何其他LLD宏名称并引用该名称。
支持的位置
LLD宏可用于:
- 在低级发现规则过滤器中
- 用于监控项原型的
- 名称
- 键参数
- 单位
- update间隔1
- 历史存储周期1
- 趋势存储周期1
- 监控项值预处理步骤
- SNMP OID
- IPMI传感器字段
- 计算/聚合监控项表达式,包括:
- 表达式常量和函数参数
- 监控项键参数
- 聚合监控项过滤条件(主机组名称和标签名称)
- SSH脚本和Telnet脚本
- 数据库监控SQLquery
- JMX监控项端点字段
- 描述
- HTTPagentURL字段
- HTTPagentHTTPquery字段字段
- HTTPagent请求体字段
- HTTPagent所需状态码字段
- HTTPagent头部字段键和值
- HTTPagentHTTP认证用户名字段
- HTTPagentHTTP认证密码字段
- HTTPagentHTTP proxy字段
- HTTPagentHTTP SSL证书file字段
- HTTPagentHTTP SSL密钥file字段
- HTTPagentHTTP SSL密钥密码字段
- HTTPagentHTTP超时1字段
- 标签
- 用于触发器原型的
- 名称
- 操作数据
- 表达式(仅限常量和函数参数)
- URL
- 描述
- 标签
- 用于图形原型的
- 名称
-
用于主机原型的
- 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
- (see the full list)
在所有这些位置中,除了低级发现规则过滤器外,LLD宏都可以在静态用户macro context内部使用。
使用宏函数
宏函数支持低级发现宏(除低级发现规则过滤器外),允许使用正则表达式提取宏值的特定部分。
例如,出于事件标记目的,您可能希望从以下LLD宏中提取客户名称和接口编号:
{#IFALIAS}=customername_1
为此,可以在触发器原型的事件标记值字段中使用带有宏的regsub宏函数:

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