低级别自动发现宏 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 起,低级别自动发现宏中支持宏函数。

脚注

1 在以 脚注 标记的字段中,必须由单个宏填充整个字段。不支持在一个字段中使用多个宏,或宏与文本混合使用。