3 低级别自动发现

概述

低级别自动发现提供了一种为计算机上的不同实体自动创建监控项、触发器和图表的方法。例如,Zabbix 可以自动对计算机上的文件系统或网络接口进行监控,而不需要为每个文件系统或网络接口手动创建监控项。另外,可以基于周期性自动发现的结果来删除无用的监控实体。

用户可以基于特定的JSON格式来自定义发现类型。

自动发现的大体流程如下:

首先,用户在 "配置" → "模板" → "自动发现" 一栏中创建发现规则。发现规则包含用来发现特定实体(如文件系统和网络接口)的(1)监控项以及监控项、触发器和图表的(2)原型。

用于自动发现的监控项与常规监控项没有大体区别:Zabbix server向agent(或者其它任何类型的监控代理)请求监控项的值,agent对其回复一个文本值。唯一区别是agent响应中包含所发现的一系列JSON数组。对自动发现检查规则有自定义的需求时才需要了解格式的细节方面,不过有必要知道返回值包含一系列 宏 → 值 的键值对。比如,监控项 "net.if.discovery" 会返回两组键值对:"{#IFNAME}" → "lo" 和 "{#IFNAME}" → "eth0"。

当创建实际的监控项、触发器、图表以及主机时,宏会替换成接收到的值。使用低级别自动发现(LLD)的宏请参考 选项 中的全部列表。

当通过自动发现收到监控项返回值的时候,Zabbix server会查找 宏 → 值 键值对,每一对 宏 → 值 会基于原型生成监控项、触发器和图表。在上述 "net.if.discovery" 的例子中,为环回接口 "lo" 生成了一组监控项、触发器和图表,为 "eth0"接口生成了一组监控项、触发器和图表。

注意,自从Zabbix 4.2 开始,低级别自动发现返回的JSON数组的格式变化了。JSON格式将不再包含 "data" 对象。现在低级别自动发现接受一个普通的JSON数组,来支持一些新特性,如监控项值的预处理和对于JSON文件中用于低级别自动发现的宏的路径自定义。

内置的自动发现的键已经可以实现在JSON文件的根路径返回一个低级别自动发现数组。如果数组使用{#MACRO}作为键,则宏和值会自动提取。任何新的内置自动发现检查都将使用没有“ data”元素的新语法。当处理一个低级别自动发现的值时,第一个步骤就是定位根目录 (数组位于 $.$.data)。

当"data"元素从所有跟自动发现有关的内置监控项中移除时,为了向后兼容,Zabbix会接受带有"data"元素的JSON格式,不过并不鼓励这么用。如果JSON数据包含一个对象,该对象只有一个"data"数组,则"data"数组的内容会通过JSONPath $.data自动提取出来。低级别自动发现现在接受可选的自定义宏,可在JSONPath语法中自定义路径。

由于上述更改,较新的代理将不再能够和较旧的 Zabbix 服务器兼容。

参阅: 被发现的实体

配置低级发现

我们将基于文件系统发现的例子来说明低级发现的配置。

为了配置发现,您需要执行以下步骤:

  • 导航至:数据收集模板主机
  • 在适当的模板/主机的行中,点击 发现

  • 在屏幕右上角点击 创建发现规则
  • 使用所需详细信息填写发现规则表单

发现规则

发现规则表单包含五个标签页,从左至右代表了发现过程中的数据流:

  • 发现规则 - 最重要的是,指定内置监控项或自定义脚本来检索发现数据
  • 预处理 - 对发现的数据应用一些预处理
  • LLD宏 - 允许从发现的监控项中提取一些宏值,用于触发器等
  • 过滤器 - 允许过滤发现的值
  • 覆盖 - 允许在应用于特定发现的objects时修改监控项、触发器、图表或主机原型

发现规则标签页包含用于发现的监控项键(以及一些通用的发现规则属性):

所有必填输入字段都标有红色星号。

参数 描述
Name 发现规则的名称。
Type 执行发现的检查类型。
在此示例中,我们使用Zabbix agent 监控项类型。
发现规则也可以是一个dependent item,依赖于常规监控项。它不能依赖于另一个发现规则。对于依赖型监控项,选择相应的类型(依赖监控项),并在“主监控项”字段中指定主监控项。主监控项必须存在。
Key 输入发现监控项键(最多2048个字符)。
例如,您可以使用内置的"vfs.fs.discovery" 监控项键来返回一个JSON string,其中包含计算机上存在的文件系统列表、它们的类型和挂载选项。
请注意,另一种文件系统发现选项是使用"vfs.fs.get" agent键的发现结果(参见example)。
Update interval 此字段指定Zabbix执行发现的频率。在开始时,当您刚刚设置文件系统发现时,您可能希望将其设置为较短的间隔,但一旦您知道它工作,您可以将其设置为30分钟或更长,因为文件系统通常不会经常更改。
Time suffixes被支持,例如30s、1m、2h、1d。
User macros被支持。
注意:只有在存在非零值的自定义间隔时,更新间隔才能设置为'0'。如果设置为'0',并且存在非零值的自定义间隔(灵活或计划),则监控项将在自定义间隔期间被轮询。
新发现规则将在创建后60秒内进行检查,除非它们具有调度或灵活更新间隔,并且更新间隔设置为0。
注意,对于现有发现规则,可以通过点击立即执行 button立即执行发现。
Custom intervals 您可以为检查监控项创建自定义规则:
灵活 - 创建更新间隔的例外(不同频率的间隔)
调度 - 创建自定义轮询时间表。
有关详细信息,请参见Custom intervals
Timeout 设置发现检查超时。选择超时选项:
全局 - 使用proxy/全局超时(显示在灰色的超时字段中);
覆盖 - 使用自定义超时(在超时字段中设置;允许范围:1 - 600s)。Time suffixes,例如30s、1m,以及user macros被支持。
点击超时链接允许您配置proxy超时或global超时(如果未使用proxy)。请注意,超时链接仅对超级管理员类型的用户可见,且具有管理General管理Proxies前端部分的权限。
Delete lost resources 指定一旦发现实体的发现状态变为“不再发现”后,多久将被删除:
永不 - 它不会被删除;
立即 - 它将立即被删除;
之后 - 它将在指定时间后被删除。该值必须大于禁用丢失资源值。
Time suffixes被支持,例如2h、1d。
User macros被支持。
注意:不建议使用“立即”,因为仅仅错误地编辑过滤器可能会导致实体及其所有历史数据被删除。
请注意,手动禁用的资源不会被低级发现删除。
Disable lost resources 指定一旦发现实体的发现状态变为“不再发现”后,多久将被禁用:
永不 - 它不会被禁用;
立即 - 它将立即被禁用;
之后 - 它将在指定时间后被禁用。该值应大于发现规则更新间隔。
请注意,自动禁用的资源如果通过低级发现重新发现,将再次启用。手动禁用的资源如果重新发现,不会再次启用。
如果删除丢失资源设置为“立即”,则不会显示此字段。
Time suffixes被支持,例如2h、1d。
User macros被支持。
Description 输入描述。
Enabled 如果选中,将处理规则。

发现规则历史不会被保留。

数据预处理

数据预处理 选项卡允许定义转换规则,应用于发现的结果。此步骤中可以定义一个或多个转换。转换按照定义的顺序执行。所有数据预处理由 Zabbix 服务器完成。

另请参阅:

类型
转换 描述
文本
正则表达式 将接收到的值与 <pattern> 正则表达式匹配,并用提取的 <output> 替换值。正则表达式支持使用 \N 序列提取最多 10 个捕获组。
参数:
pattern - 正则表达式
output - 输出格式化模板。\N(其中 N=1…9)转义序列被替换为第 N 个匹配的组。\0 转义序列被替换为匹配的文本。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
替换 查找搜索字符串并用另一个(或无)替换它。所有搜索字符串的出现都将被替换。
参数:
搜索字符串 - 要查找和替换的字符串,区分大小写(必需)
replacement - 用于替换搜索字符串的字符串。replacement 字符串也可以为空,有效地允许在找到时删除搜索字符串。
可以使用转义序列搜索或替换换行符,回车,制表符和空格 "\n \r \t \s";反斜杠可以转义为 "\\",转义序列可以转义为 "\\n"。换行符,回车,制表符的转义在低级发现期间自动完成。
结构化数据
JSONPath 使用 JSONPath 功能从 JSON 数据中提取值或片段。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
XML XPath 使用 XPath 功能从 XML 数据中提取值或片段。
要使此选项工作,Zabbix 服务器必须与 libxml 支持一起编译。
示例:
number(/document/item/value) 将从 <document><item><value>10</value></item></document> 提取 10
number(/document/item/@attribute) 将从 <document><item attribute="10"></item></document> 提取 10
/document/item 将从 <document><item><value>10</value></item></document> 提取 <item><value>10</value></item>
请注意,不支持命名空间。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
CSV 转 JSON 将 CSV 文件数据转换为 JSON 格式。
更多信息,请参阅:CSV 转 JSON 数据预处理
XML 转 JSON 将 XML 格式的数据转换为 JSON。
更多信息,请参阅:序列化规则
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
SNMP
SNMP walk 值 通过指定的 OID/MIB 名称提取值并应用格式化选项:
不变 - 将 Hex-STRING 作为未转义的十六进制字符串返回(注意 显示提示仍然适用);
UTF-8 从 Hex-STRING - 将 Hex-STRING 转换为 UTF-8 字符串;
MAC 从 Hex-STRING - 将 Hex-STRING 转换为 MAC 地址字符串(其中 ' ' 将被替换为 ':');
Integer 从 BITS - 将表示为十六进制字符序列(例如 "1A 2B 3C 4D")的位字符串的前 8 字节转换为 64 位无符号整数。在超过 8 字节的位字符串中,后续字节将被忽略。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
SNMP walk 转 JSON 将 SNMP 值转换为 JSON。在 JSON 中指定字段名称和相应的 SNMP OID 路径。字段值将由指定 SNMP OID 路径中的值填充。
您可以使用此数据预处理步骤进行 SNMP OID 发现
SNMP walk 值 步骤中可用的类似值格式化选项。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
SNMP get 值 对 SNMP get 值应用格式化选项:
UTF-8 从 Hex-STRING - 将 Hex-STRING 转换为 UTF-8 字符串;
MAC 从 Hex-STRING - 将 Hex-STRING 转换为 MAC 地址字符串(其中 ' ' 将被替换为 ':');
Integer 从 BITS - 将表示为十六进制字符序列(例如 "1A 2B 3C 4D")的位字符串的前 8 字节转换为 64 位无符号整数。在超过 8 字节的位字符串中,后续字节将被忽略。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
自定义脚本
JavaScript 在点击参数字段或旁边的铅笔图标时打开的模态编辑器中输入 JavaScript 代码。
请注意,可用的 JavaScript 长度取决于 使用的数据库
更多信息,请参阅:JavaScript 数据预处理
验证
不匹配正则表达式 指定值必须不匹配的正则表达式。
例如 Error:(.*?)\.
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
检查 JSON 中的错误 检查位于 JSONPath 的应用程序级错误消息。如果成功且消息不为空,则停止处理;否则,继续使用此数据预处理步骤之前的值进行处理。请注意,这些外部服务错误将按原样报告给用户,无需添加数据预处理步骤信息。
例如 $.errors。如果接收到类似 {"errors":"e1"} 的 JSON,则不会执行下一个数据预处理步骤。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
检查 XML 中的错误 检查位于 Xpath 的应用程序级错误消息。如果成功且消息不为空,则停止处理;否则,继续使用此数据预处理步骤之前的值进行处理。请注意,如果无法解析无效的 XML,则不会报告错误。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
匹配正则表达式 指定值必须匹配的正则表达式。
如果您勾选 自定义失败 复选框,可以指定自定义错误处理选项:要么丢弃值,设置指定的值或设置指定的错误消息。
节流
使用心跳丢弃不变 如果值在定义的时间段(秒)内未改变,则丢弃该值。
支持正整数值以指定秒数(最小 - 1 秒)。此字段中可以使用时间后缀(例如 30s,1m,2h,1d)。此字段中可以使用用户宏和低级发现宏。
对于发现项,只能指定一个节流选项。
例如 1m。如果在 60 秒内两次将相同的文本传递到此规则,它将被丢弃。
注意:更改项原型不会重置节流。仅当数据预处理步骤更改时,节流才会重置。
Prometheus
Prometheus 转 JSON 将所需的 Prometheus 指标转换为 JSON。
更多信息,请参阅 Prometheus 检查

请注意,如果通过模板将发现规则应用于主机,则此选项卡的内容为只读。

自定义宏

LLD宏选项卡允许指定自定义低级别发现宏。

自定义宏在返回的JSON中没有已经定义所需的宏时非常有用。例如:

  • 用于文件系统发现的原生vfs.fs.discovery键返回一个包含一些预定义LLD宏的JSON,如{#FSNAME},{#FSTYPE}。这些宏可以直接在监控项、触发器原型(参见页面后续部分)中使用;无需定义自定义宏;
  • vfs.fs.get agent监控项也返回一个包含文件系统数据的JSON,但没有预定义的LLD宏。在这种情况下,您可以自行定义宏,并使用JSONPath将它们映射到JSON中的值:

提取的值可以在发现的监控项、触发器等中使用。请注意,值将从发现结果和到目前为止的任何预处理步骤中提取。

参数 描述
LLD宏 低级别发现宏的名称,使用以下语法:{#MACRO}。
JSONPath 用于从LLD行中提取LLD宏值的路径,使用JSONPath语法。
从返回的JSON中提取的值用于替换监控项、触发器等原型字段中的LLD宏。
JSONPath可以使用点表示法或括号表示法指定。在存在特殊字符和Unicode的情况下,应使用括号表示法,如 $['unicode + special chars #1']['unicode + special chars #2']

例如,$.foo将从这个JSON中提取"bar"和"baz":[{"foo":"bar"}, {"foo":"baz"}]
请注意,$.foo也将从这个JSON中提取"bar"和"baz":{"data":[{"foo":"bar"}, {"foo":"baz"}]},因为一个"数据"对象会自动处理(为了向后兼容,与Zabbix 4.2版本之前的低级别发现实现)。

过滤器

过滤器可用于仅生成符合标准的实体的真实监控项、触发器和图表。过滤器选项卡包含发现规则过滤器定义,允许根据发现值进行过滤:

参数 描述
计算类型 提供以下选项用于计算过滤器:
- 所有过滤器都必须通过;
- 只需一个过滤器通过即可;
与/或 - 使用不同宏名的和相同宏名的
自定义表达式 - 提供定义自定义过滤器计算的可能性。公式必须包含列表中的所有过滤器。限制为255个字符。
过滤器 提供以下过滤条件运算符:匹配不匹配存在不存在
匹配不匹配运算符期望一个Perl兼容正则表达式 (PCRE)。例如,如果您只对C:、D:和E:文件系统感兴趣,您可以将{#FSNAME}放入“宏”中,并将"^C|^D|^E"正则表达式放入“正则表达式”文本字段中。也可以通过使用{#FSTYPE}宏(例如,"^ext|^reiserfs")按文件系统类型进行过滤,以及通过使用{#FSDRIVETYPE}宏(例如,“fixed”)按驱动器类型进行过滤(仅由Windows agent支持)。
您可以在“正则表达式”字段中输入正则表达式或引用全局正则表达式
为了测试正则表达式,您可以使用“grep -E”,例如:for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo "SKIP: $f"; done

存在不存在运算符允许根据指定的LLD宏在响应中是否存在来过滤实体。
请注意,如果过滤器中的宏在响应中缺失,除非为该宏指定了“不存在”条件,否则找到的实体将被忽略。

如果宏的缺失影响表达式结果,将显示警告。例如,在以下情况:
{#A} matches 1 and {#B} matches 2 - 将给出警告
{#A} matches 1 or {#B} matches 2 - 不显示警告

在LLD规则中使用的正则表达式(例如,不正确的“用于发现的文件系统”正则表达式)中的错误或拼写错误可能会导致删除数千个配置元素、历史值和许多主机的事件。

如果要正确发现仅在大小写上不同的文件系统名称,Zabbix在MySQL中的数据库必须创建为区分大小写。

覆盖

覆盖 选项卡允许对满足给定条件发现出来的对象,设置规则来修改监控项,触发器、图形和主机原型或它们的属性。

覆盖(如果有的话)显示在一个可重新排序的拖放列表中,并且按照定义的顺序执行。 配置一个新的覆盖,在 覆盖 选项卡单击 。要编辑现有覆盖,请单击覆盖名称。在弹出窗口中编辑覆盖规则详细信息。

所有强制参数都标有红色星号。

参数 描述
名称 唯一的(根据 LLD 规则)覆盖名称。
如果匹配过滤器 当下面条件满足时,是否需要执行下一步覆盖:
继续覆盖 - 后续覆盖会被执行。
停止处理 - 执行先前的(如有的话)操作并且当前这个覆盖也会被执行,对于匹配的 LLD 行,将忽略后续重写。
过滤器 定义了覆盖会应用到哪些已发现实体上。覆盖过滤器在自动发现规则的过滤器 之后执行,其和自动发现规则的过滤器功能相同。
操作 覆盖操作包含下列内容:
条件 - 一个对象类型 (监控项原型/触发器原型/图表原型/主机原型) 和一个需要满足的条件(等于/不等于/包含/不包含/匹配/不匹配)
动作 - 编辑和移除操作的链接。

配置操作

要配置一个新操作, 点击操作面板上的 。编辑现有操作, 点击操作旁边的 。点击编辑按钮会出现弹窗。

参数 描述
对象 可使用四种对象:
监控项原型
触发器原型
图表原型
主机原型
条件 对筛选的实体应用操作.
操作 支持以下操作:
等于 - 应用到此原型
不等于 - 应用到所有原型, 此原型除外
包含 - 如果原型名称包含此字符串,则应用
不包含 - 如果原型名称不包含此字符串,则应用
匹配 - 如果原型名称匹配正则表达式,则应用
不匹配 - 如果原型名称不匹配正则表达式,则应用
模式 要搜索的 正则表达式 或字符串.
对象: 监控项原型
启用新的 如果选择复选框, 会出现按钮, 允许覆盖原始监控项原型设置:
- 添加监控项,并且监控项处于启用状态。
- 添加监控项到已发现的实体,但处于禁用状态.
发现 如果选择复选框, 会出现按钮, 允许覆盖原始监控项原型设置:
- 添加监控项。
- 不添加监控项.
更新间隔 如果选择复选框, 会出现两个选项, 允许为监控项设置不同的间隔:
延迟 - 监控项更新间隔。支持用户宏时间单位 (如 30s, 1m, 2h, 1d)。如果使用了 自定义时间间隔 则更新间隔应设置为0。
自定义时间间隔 - 点击 指定 灵活/计划的时间间隔。 更多信息请参阅 自定义时间间隔.
历史记录 如果选择复选框, 会出现按钮, 允许给监控项设置不同的历史保存周期:
请勿存储 - 如果选择,那么历史数据不会保存。
存储最多 - 如果选择, 右侧会出现输入框,可以输入保存周期。支持用户宏LLD宏.
趋势 如果选择复选框, 会出现按钮, 允许给监控项设置不同的趋势数据保存周期:
请勿存储 - 如果选择, 趋势数据不会保存。
存储最多 - 如果选择, 右侧会出现输入框。支持用户宏LLD宏.
标签 如果选择复选框,会出现一个新面板, 允许指定 标签-值 的键值对。
即使标签名称匹配,这些标签也会追加到监控项原型的标签末尾.
对象: 触发器原型
启用新的 如果选择复选框, 会出现按钮, 允许覆盖原始触发器原型设置:
- 添加触发器,并且处于启用状态。
- 添加触发器到已发现的实体中,但触发器是禁用的.
发现 如果选择复选框, 会出现按钮,允许覆盖原始触发器原型设置 :
- 添加触发器。
- 不会添加触发器.
严重性 如果选择复选框, 会出现触发器严重性按钮, 允许修改触发器的严重性级别.
标签 如果选择复选框,会出现一个新面板, 允许指定 标签-值 的键值对。
即使标签名称匹配,这些标签也会追加到监控项原型的标签末尾.
对象: 图形原型
发现 如果选择复选框, 会出现按钮, 允许覆盖原始图形原型设置:
- 添加图形。
- 不添加图形.
对象: 主机原型
启用新的 如果选择复选框, 会出现按钮,允许覆盖原始主机原型设置 :
- 创建主机,主机处于启用状态。
- 创建主机,主机处于禁用状态.
发现 如果选择复选框,会出现按钮,允许覆盖原始的主机原型设置:
- 主机将被发现。
- 主机不会被发现.
模板链接 如果选择复选框,会出现一个输入框,用于指定模板。 输入模板名称,或点击输入框旁边的 选择 然后从弹窗列表中选择模板。
所有链接到主机原型的模板均会被替换为此覆盖中配置的模板.
标签 如果选择复选框,会出现一个新面板, 允许指定 标签-值 的键值对。
即使标签名称匹配,这些标签也会追加到主机原型的标签后面.
主机资产记录 如果选择复选框,会出现按钮,允许基于主机原型选择不同的资产模式 :
禁用 - 不添加主机资产数据。
手工 - 手工输入主机资产数据。
自动 - 基于收集的数据自动添加主机资产数据.

表单按钮

表单底部的按钮允许执行多种操作。

添加一个自动发现规则。此按钮仅在创建新的自动发现规则时可用。
更新自动发现规则的属性。此按钮仅在更新现有的自动发现规则时可用。
根据当前自动发现规则的属性创建另一个自动发现规则。
立即根据自动发现规则执行发现。自动发现规则必须已经存在。请参阅更多详情
注意,当立即执行发现时,配置缓存不会更新,因此结果不会反映自动发现规则配置的非常近期的更改。
测试自动发现规则的配置。使用此按钮在不永久应用任何更改的情况下验证配置设置(如连通性和参数正确性)。
删除自动发现规则。
取消自动发现规则属性的编辑。

发现的实体

下图展示了在主机配置中,发现的监控项、触发器和图表的外观。发现的实体以橙色链接前缀,指向它们来源的发现规则。

请注意,如果存在与发现实体相同的唯一性标准的现有实体,例如具有相同键的监控项或具有相同名称的图表,则不会创建发现的实体。在这种情况下,前端会显示错误消息,指出低级发现规则无法创建某些实体。然而,发现规则本身不会因此变得不受支持,因为某些实体无法创建并被跳过。发现规则将继续创建/更新其他实体。

如果发现的实体(如主机、文件系统、接口等)不再被发现(或不再通过过滤器),则基于该实体创建的实体可能会自动禁用并最终删除。

根据Disable lost resources参数的值,丢失的资源可能会自动禁用。这影响丢失的主机、监控项和触发器。

根据Delete lost resources参数的值,丢失的资源可能会自动删除。这影响丢失的主机、主机组、监控项、触发器和图表。

当发现的实体变为'不再发现'时,实体列表中会显示生命周期指示器。将鼠标指针移至其上,将显示一条消息,指示其状态详情。

如果实体被标记为删除,但在预期时间未被删除(禁用的发现规则或监控项主机),它们将在下次处理发现规则时被删除。

包含被标记为删除的其他实体的实体,在发现规则级别更改时将不会更新。例如,基于LLD的触发器如果包含被标记为删除的监控项,将不会更新。

其它类型的自动发现

有关其他类型的开箱即用自动发现的详细信息和操作方法,请参阅以下章节:

有关自动发现监控项的 JSON 格式的更多细节,以及如果通过一个Perl脚本实现发现自己的文件系统的示例。请参阅 创建自定义LLD规则