5 低级别自动发现宏
概述
[low-level] (/manual/discovery/low_level_discovery)中使用了一种宏发现](LLD) 功能:
· {#MACRO}
它是一个在 LLD 规则中使用并返回实际值的宏文件系统名称、网络接口、SNMP OID 等。
这些宏可用于创建监控项、触发器和图形原型。然后,当发现真正的文件系统时,网络接口等,这些宏被替换为实数值并且是创建真实监控项、触发器和图表的基础。
这些宏也用于创建主机和主机组 prototypes在虚拟机 发现 中。
一些低级别自动发现宏与 LLD “预打包”Zabbix 中的函数 - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX},{#SNMPVALUE}。然而,遵守这些名称不是强制性的,当创建一个自定义低级别自动发现规则。然后您可以使用任何其他 LLD 宏名称和参考那个名字。
Supported data types
When defining custom discovery rules, property values returned in JSON objects for LLD macros must be one of the following primitive types:
- string;
- number;
- boolean.
Arrays, objects, and null values are not supported. Any LLD macro referring to such a value will remain unexpanded and will appear literally (e.g. '{#MY_MACRO}') during item preprocessing and creation.
支持的位置
可以使用 LLD 宏:
- 在低级别自动发现规则过滤器中
- 对于监控项原型
- 姓名
- 关键参数
- 单元
- 更新间隔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 agent字段
- HTTP agent HTTP SSL 证书文件字段
- HTTP agent HTTP SSL 密钥文件字段
- HTTP agent HTTP SSL 密钥密码字段
- 标签
- 用于触发器原型
- 姓名
- 运营数据
- 表达式(仅在常量和函数参数中)
- 网址
- 描述
- 标签
- 对于图形原型
- 姓名
- 对于主机原型
- 姓名
- 可见名称
- 自定义接口字段:IP、DNS、端口、SNMP v1/v2 社区、 SNMP v3 上下文名称、SNMP v3 安全名称、SNMP v3 身份验证密码,SNMP v3 隐私密码
- 主机组原型名称
- 主机标签值
- 主机宏值
- (参见完整列表)
在所有这些地方,LLD 宏都可以在静态用户 macro上下文。
使用宏函数
低级别自动发现宏支持宏功能(在低级别自动发现规则过滤器),允许提取某个部分使用正则表达式的宏值。
例如,您可能想要提取客户名称和接口用于事件标记的以下 LLD 宏中的编号:
· {#IFALIAS}=customername_1
为此,可以将 regsub 宏函数与触发器原型的事件标签值字段:

请注意,未引用的监控项中不允许使用逗号 key参数,所以必须引用包含宏函数的参数。反斜杠(\) 字符应用于转义范围。例子:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
有关宏函数语法的更多信息,请参阅:宏函数
自 Zabbix 以来,低级别自动发现宏支持宏功能4.0。
Item prototypes with no key parameters
Some item types (for example Zabbix trapper and Simple checks) do not expose regular key parameters in the same way as agent items. When creating an item prototype for such types, place the LLD macro inside the item key parameter brackets [...] so it is treated as a parameter and substituted during discovery:
v_[{#MACRO}]
脚注
1 在标有 1 的字段中,单个宏必须填充整个字段。一个或多个字段中的多个宏不支持与文本混合。