5 低级别自动发现宏

概述

low-level discovery(LLD)功能中使用了一种宏:

{#MACRO} 

该宏用于LLD规则中,并返回 file 系统名称、网络接口、SNMP OID等的真实值。

这些宏可用于创建 监控项、触发器和图形的原型。当发现真实的 file 系统、网络接口等时,这些宏会被替换为真实值,并作为创建真实 监控项、触发器和图形的基础。

这些宏还用于在虚拟机 主机原型 中创建 主机 和 主机组 的原型

一些低级别自动发现宏是Zabbix中LLD功能“预封装”提供的 —— {#FSNAME}、{#FSTYPE}、{#IFNAME}、{#SNMPINDEX}、{#SNMPVALUE}。然而,在创建 custom 低级别自动发现规则时,并非强制要求遵循这些名称。此时您可以使用任何其他LLD宏名称并引用该名称。

支持的数据类型

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

  • string;
  • 数字;
  • boolean。

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

支持的位置

LLD 宏可以用于:

  • 低级别自动发现规则过滤器中
  • 用于以下位置的 监控项原型:
    • 名称
    • 键值参数
    • 单位
    • update 间隔脚注
    • 超时时间脚注
    • 历史数据存储周期脚注
    • 趋势数据存储周期脚注
    • 监控项 值的预处理步骤
    • SNMP OID
    • IPMI 传感器字段
    • 计算型/聚合型 监控项 表达式,包括:
      • 表达式常量和函数参数
      • 监控项 键值参数
    • 聚合型 监控项 过滤条件(主机组 名称和标签名称)
    • 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 证书 file 字段
    • HTTP agent HTTP SSL 密钥 file 字段
    • 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 宏函数一起使用:

请注意,未加引号的 监控项 键参数 中不允许使用逗号,因此包含宏函数的参数必须加引号。参数内双引号应使用反斜杠 (\) 转义。示例:

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

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

自 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 在以 脚注 标记的字段中,必须由单个宏填充整个字段。不支持在一个字段中使用多个宏,或宏与文本混合使用。