5 低级别自动发现宏

概述

[low-level] (/manual/discovery/low_level_discovery)中使用了一种宏发现](LLD) 功能:

· {#MACRO}

它是一个在 LLD 规则中使用并返回实际值的宏文件系统名称、网络接口、SNMP OID 等。

这些宏可用于创建监控项、触发器和图形原型。然后,当发现真正的文件系统时,网络接口等,这些宏被替换为实数值并且是创建真实监控项、触发器和图表的基础。

这些宏也用于创建主机和主机组 prototypes在虚拟机 发现 中。

一些低级别自动发现宏与 LLD “预打包”Zabbix 中的函数 - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX},{#SNMPVALUE}。然而,遵守这些名称不是强制性的,当创建一个自定义低级别自动发现规则。然后您可以使用任何其他 LLD 宏名称和参考那个名字。

支持的数据类型

在定义自定义发现规则时,JSON 中返回的LLD宏属性值必须是以下基本类型之一:

  • string;
  • 数字;
  • boolean。

不支持数组、objects 和 null 值。任何引用此类值的LLD宏将保持未展开状态,并在监控项预处理和创建期间按字面形式出现(例如 '{#MY_MACRO}')。

支持的位置

LLD 宏可以用于:

  • 在低级发现规则的过滤器中
  • 在以下位置的监控项原型中:
    • 名称
    • key 参数
    • 单位
    • 更新间隔1
    • 超时时间1
    • 历史数据存储周期1
    • 趋势数据存储周期1
    • 监控项值预处理步骤
    • SNMP OID
    • IPMI 传感器字段
    • 计算/聚合监控项表达式中:
      • 表达式常量和函数参数
      • 监控项 key 参数
    • 聚合监控项过滤条件(主机组名称和标签名称)
    • SSH 脚本和 Telnet 脚本
    • 数据库监控 SQL query
    • JMX 监控项端点字段
    • 描述
    • HTTP agent URL 字段
    • HTTP agent HTTP query字段
    • 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 密钥密码字段
    • 标签
  • 在触发器原型中:
    • 名称
    • 运行数据
    • 表达式(仅在常量和函数参数中)
    • URL
    • 描述
    • 标签
  • 在图形原型中:
    • 名称
  • 在主机原型中:
    • 名称
    • 可见名称
    • 自定义接口字段:IP、DNS、端口、SNMP v1/v2 社区、 SNMP v3 上下文名称、SNMP v3 安全名称、SNMP v3 认证口令、SNMP v3 隐私口令
    • 主机组原型名称
    • 主机标签值
    • 主机宏值
    • (参见full list

在所有这些位置,除了低级发现规则的过滤器,LLD 宏可以在静态用户macro context内部使用。

使用宏函数

低级别自动发现宏支持宏功能(在低级别自动发现规则过滤器),允许提取某个部分使用正则表达式的宏值。

例如,您可能想要提取客户名称和接口用于事件标记的以下 LLD 宏中的编号:

· {#IFALIAS}=customername_1

为此,可以将 regsub 宏函数与触发器原型的事件标签值字段:

请注意,未引用的监控项中不允许使用逗号 key参数,所以必须引用包含宏函数的参数。反斜杠(\) 字符应用于转义范围。例子:

net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]

有关宏函数语法的更多信息,请参阅:宏函数

自 Zabbix 以来,低级别自动发现宏支持宏功能4.0。

脚注

1 在标有 1 的字段中,单个宏必须填充整个字段。一个或多个字段中的多个宏不支持与文本混合。