低级别发现宏
概述
在低级发现(LLD)功能中,会使用一种宏:
{#MACRO}
它是在 LLD 规则中使用的宏,返回文件系统名称、网络接口、SNMP OID 等的实际值。
这些宏可用于创建实体原型(监控项、触发器、图形、LLD 规则、主机和主机组原型)。 在发现实际的文件系统、网络接口、虚拟机等时,这些宏会被替换为实际值,并作为创建实际实体的基础。
有些低级发现宏是 Zabbix 中 LLD 功能“预置”的——{#FSNAME}、{#FSTYPE}、{#IFNAME}、{#SNMPINDEX}、{#SNMPVALUE}。 但是,在创建自定义低级发现规则时,并不强制要求遵循这些名称。 此时,您可以使用任何其他 LLD 宏名称,并引用该名称。
支持的数据类型
在定义自定义发现规则时,JSON 对象中为 LLD 宏返回的属性值必须是以下原始类型之一:
- string
- number
- boolean
不支持数组、对象和 null 值。
任何引用此类值的 LLD 宏都将保持未展开状态,并会在监控项预处理和创建期间按字面显示(例如 '{#MY_MACRO}')。
支持的位置
LLD 宏可以使用在:
- 低级别发现规则筛选器中
- 嵌套低级别发现规则中,包括
- JSONPath 预处理参数
- 自定义 LLD 宏的 JSONPath 字段
- 监控项原型和发现原型中,包括
- 名称
- 键参数
- 单位
- 更新间隔1
- 超时1
- 历史数据存储周期1
- 趋势数据存储周期1
- 监控项值预处理步骤
- SNMP OID
- IPMI 传感器字段
- 计算/聚合监控项表达式,包括:
- 表达式常量和函数参数
- 监控项键参数
- 聚合监控项筛选条件(主机组名称和标签名称)
- SSH 脚本和 Telnet 脚本
- 数据库监控 SQL 查询
- JMX 监控项端点字段
- 描述
- HTTP agent URL 字段
- HTTP agent HTTP 查询字段
- HTTP agent 请求正文字段
- HTTP agent 必需状态码字段
- HTTP agent 标头字段的键和值
- HTTP agent HTTP 身份验证用户名字段
- HTTP agent HTTP 身份验证密码字段
- HTTP agent HTTP proxy 字段
- HTTP agent HTTP SSL 证书文件字段
- HTTP agent HTTP SSL 密钥文件字段
- HTTP agent HTTP SSL 密钥密码字段
- telemetry 查询的时间偏移字段
- telemetry 查询的回溯限制字段
- telemetry 查询的粒度字段
- 标签
- 触发器原型中,包括
- 名称
- 操作数据
- 表达式(仅限常量和函数参数)
- URL
- 描述
- 标签
- 图形原型中,包括
- 名称
- 主机原型中,包括
- 名称
- 可见名称
- 自定义接口字段:IP、DNS、端口、SNMPv1/SNMPv2 团体名、SNMPv2/SNMPv3 最大重复次数、SNMPv1/SNMPv2/SNMPv3 重试次数、SNMPv3 上下文名称、SNMPv3 安全名称、SNMPv3 身份验证密码短语、SNMPv3 隐私密码短语
- 主机组原型名称
- 主机标签值
- 主机宏值
- (请参阅完整列表)
在上述所有位置(低级别发现规则筛选器除外),LLD 宏都可以在静态用户宏上下文中使用。
使用宏函数
低级别发现宏支持宏函数(低级别发现规则的过滤器中除外),允许使用正则表达式提取宏值的特定部分。
例如,您可能希望从以下 LLD 宏中提取客户名称和接口编号,以便用于事件标记:
{#IFALIAS}=customername_1
为此,可以在触发器原型的事件标签值字段中,将 regsub 宏函数与该宏结合使用:

请注意,未加引号的监控项 key 参数中不允许使用逗号,因此包含宏函数的参数必须加引号。
参数中的双引号应使用反斜杠(\)字符进行转义。
示例:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
有关宏函数语法的更多信息,请参阅:宏函数
从 Zabbix 4.0 开始,低级别发现宏支持宏函数。
不带键参数的监控项原型
当未使用监控项键参数时,请将 LLD 宏放在监控项键参数方括号 [...] 内,这样它会被视为一个参数,并在发现期间被替换:
v_[{#MACRO}]
注释
1 在标有 1 的字段中,单个宏必须填充整个字段。 不支持在一个字段中使用多个宏,也不支持将宏与文本混合使用。