LLD规则对象

以下对象与 自动发现规则 API 直接相关。

LLD规则

低级别自动发现(LLD)规则对象具有以下属性:

属性类型描述
itemidIDLLD规则的ID。

属性行为:
- 只读
- 更新操作时必需
delaystringLLD规则的更新间隔。

接受秒或带后缀的时间单位(例如,30s, 1m, 2h, 1d)以及可选的一个或多个自定义间隔,所有这些都用分号分隔。自定义间隔可以是灵活间隔和计划间隔的混合。

接受用户宏。如果使用,值必须是单个宏。不支持多个宏或与文本混合的宏。灵活间隔可以写成两个宏,用正斜杠分隔(例如,{$FLEXINTERVAL}/{$FLEX_PERIOD})。

示例:
1h;wd1-5h9-18;{$Macro1}/1-7,00:00-24:00;0/6-7,12:00-24:00;{$Macro2}/{$Macro3}

属性行为:
- 如果type设置为”Zabbix agent” (0), “简单检查” (3), “Zabbix 内部” (5), “外部检查” (10), “数据库监控” (11), “IPMI 客户端” (12), “SSH 客户端” (13), “TELNET 客户端” (14), “JMX agent代理程序” (16), “HTTP 代理” (19), “SNMP 代理” (20), “脚本” (21), “Browser” (22),或者如果type设置为”Zabbix agent (主动式)” (7)且key
不包含”mqtt.get”,则为必需
hostidIDLLD规则所属的主机ID。

属性行为:
- 常量
- 创建操作时必需
interfaceidIDLLD规则的主机接口ID。

属性行为:
- 如果LLD规则属于主机且type设置为”Zabbix agent”, “IPMI 客户端”, “JMX agent代理程序”, 或 “SNMP 代理”,则为必需
- 如果LLD规则属于主机且type设置为”简单检查”, “外部检查”, “SSH 客户端”, “TELNET 客户端”, 或 “HTTP 代理”,则为支持
keystringLLD规则键。

属性行为:
- 创建操作时必需
- 继承对象时只读
namestringLLD规则的名称。

属性行为:
- 创建操作时必需
- 继承对象时只读
typeintegerLLD规则的类型。

可能的值:
0 - Zabbix agent;
2 - Zabbix trapper;
3 - 简单检查;
5 - Zabbix 内部;
7 - Zabbix agent (主动式);
10 - 外部检查;
11 - 数据库监控;
12 - IPMI 客户端;
13 - SSH 客户端;
14 - TELNET 客户端;
16 - JMX agent代理程序;
18 - 依赖项;
19 - HTTP 代理;
20 - SNMP 代理;
21 - 脚本;
22 - Browser。

属性行为:
- 创建操作时必需
- 继承对象时只读
urlstringURLstring。
支持用户宏、{HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}。

属性行为:
- 如果type设置为”HTTP 代理”,则为必需
- 继承对象时只读
allow_trapsinteger允许以与trapper项类似的方式填充值。

可能的值:
0 - (默认) 不允许接受传入数据;
1 - 允许接受传入数据。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
authtypeinteger认证方法。

如果type设置为”SSH 客户端”:
0 - (默认) 密码;
1 - 公钥。

如果type设置为”HTTP 代理”:
0 - (默认) 无;
1 - 基本;
2 - NTLM。

属性行为:
- 如果type设置为”SSH 客户端”或”HTTP 代理”,则为支持
- 如果type设置为”HTTP 代理”,继承对象时只读
descriptionstringLLD规则的描述。
errorstring如果更新LLD规则值时存在问题,则错误文本。

属性行为:
- 只读
follow_redirectsinteger在轮询数据时跟随响应重定向。

可能的值:
0 - 不跟随重定向;
1 - (默认) 跟随重定向。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
headersarray执行HTTP请求时将发送的headers数组。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
http_proxystringHTTP(S)代理连接string。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
ipmi_sensorstringIPMI传感器。

属性行为:
- 如果type设置为”IPMI 客户端”且key未设置为”ipmi.get”,则为必需
- 如果type设置为”IPMI 客户端”,则为支持
- 继承对象时只读
jmxendpointstringJMX代理自定义连接string。

默认值:service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi

属性行为:
- 如果type设置为”JMX agent代理程序”,则为支持
lifetimestring不再发现的项目将被删除的时间周期。接受秒、带后缀的时间单位或用户宏。

默认值:7d
lifetime_typeinteger删除丢失LLD资源的场景。

可能的值:
0 - (默认) 达到生命周期阈值后删除;
1 - 不删除;
2 - 立即删除。
enabled_lifetimestring不再发现的项目将被禁用的时间周期。接受秒、带后缀的时间单位或用户宏。

默认值:0
enabled_lifetime_typeinteger禁用丢失LLD资源的场景。

可能的值:
0 - 达到生命周期阈值后禁用;
1 - 不禁用;
2 - (默认) 立即禁用。
master_itemidID主项的ID。
允许最多3个依赖项,依赖项的最大数量等于999。
发现规则不能成为另一个发现规则的主项。

属性行为:
- 如果type设置为”依赖监控项”,则为必需
- 继承对象时只读
output_formatinteger响应是否应转换为JSON。

可能的值:
0 - (默认) 存储原始数据;
1 - 转换为JSON。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
paramsstring根据LLD规则的类型,附加参数:
- 对于SSH和Telnet LLD规则,执行的脚本;
- 对于数据库监控LLD规则,SQL查询;
- 对于计算LLD规则,公式;
- 对于脚本和BrowserLLD规则,脚本。

属性行为:
- 如果type设置为”数据库监控”, “SSH 客户端”, “TELNET 客户端”, “脚本” 或 “Browser”,则为必需
- 如果type设置为”脚本” 或 “Browser”,继承对象时只读
parametersobject/array如果type设置为”脚本” 或 “Browser”,则附加参数。
具有namevalue属性的对象数组,其中name必须是唯一的。

属性行为:
- 如果type设置为”脚本” 或 “Browser”,则为支持
- 继承对象时只读
passwordstring认证密码。

属性行为:
- 如果type设置为”JMX agent代理程序”且设置了username,则为必需
- 如果type设置为”简单检查”, “数据库监控”, “SSH 客户端”, “TELNET 客户端”, 或 “HTTP 代理”,则为支持
- 如果type设置为”HTTP 代理”,继承对象时只读
post_typeinteger存储在posts属性中的post数据正文的类型。

可能的值:
0 - (默认) 原始数据;
2 - JSON数据;
3 - XML数据。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
postsstringHTTP(S)请求正文数据。

属性行为:
- 如果type设置为”HTTP 代理”且post_type设置为”JSON data” 或 “XML data”,则为必需
- 如果type设置为”HTTP 代理”且post_type设置为”Raw data”,则为支持
- 继承对象时只读
privatekeystring私钥文件的名称。

属性行为:
- 如果type设置为”SSH 客户端”且authtype设置为”public key”,则为必需
publickeystring公钥文件的名称。

属性行为:
- 如果type设置为”SSH 客户端”且authtype设置为”public key”,则为必需
query_fieldsarray执行HTTP请求时将发送的query fields数组。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
request_methodinteger请求方法的类型。

可能的值:
0 - (默认) GET;
1 - POST;
2 - PUT;
3 - HEAD。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
retrieve_modeinteger应存储响应的哪一部分。

如果request_method设置为”GET”, “POST”, 或 “PUT”:
0 - (默认) 正文;
1 - 头部;
2 - 正文和头部都将被存储。

如果request_method设置为”HEAD”:
1 - 头部。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
snmp_oidstringSNMP OID。

属性行为:
- 如果type设置为”SNMP 代理”,则为必需
- 继承对象时只读
ssl_cert_filestring公共SSL密钥文件路径。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
ssl_key_filestring私有SSL密钥文件路径。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
ssl_key_passwordstringSSL密钥文件的密码。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
stateintegerLLD规则的状态。

可能的值:
0 - (默认) 正常;
1 - 不支持。

属性行为:
- 只读
statusintegerLLD规则的状态。

可能的值:
0 - (默认) 启用的LLD规则;
1 - 禁用的LLD规则。
status_codesstring所需的HTTP状态代码范围,用逗号分隔。
还支持作为逗号分隔列表的一部分的用户宏。

示例:200,200-{$M},{$M},200-400

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
templateidID父模板LLD规则的ID。

属性行为:
- 只读
timeoutstring监控项数据轮询请求超时。
接受秒或带后缀的时间单位(例如,30s, 1m)。
也接受用户宏。

可能的值范围:1-600s。

默认值:”” - 使用代理/全局设置。

属性行为:
- 如果type设置为”Zabbix agent” (0), “简单检查” (3) 且 key 不以 “vmware.“ 和 “icmpping“ 开头,”Zabbix agent (主动式)” (7), “外部检查” (10), “数据库监控” (11), “SSH 客户端” (13), “TELNET 客户端” (14), “HTTP 代理” (19), “SNMP 代理” (20) 且 snmp_oid 以 “walk[“ 或 “get[“ 开头,”脚本” (21), “Browser” (22),则为支持
- 继承对象时只读
trapper_hostsstring允许的主机。

属性行为:
- 如果type设置为”Zabbix trapper”,或者如果type设置为”HTTP 代理”且allow_traps设置为”允许接受传入数据”,则为支持
usernamestring认证用户名。

属性行为:
- 如果type设置为”SSH 客户端”, “TELNET 客户端”,或者如果type设置为”JMX agent代理程序”且设置了password,则为必需
- 如果type设置为”简单检查”, “数据库监控”,或 “HTTP 代理”,则为支持
- 如果type设置为”HTTP 代理”,继承对象时只读
uuidstring通用唯一标识符,用于将导入的LLD规则链接到已存在的规则。如果没有给出,则自动生成。

属性行为:
- 如果LLD规则属于模板,则为支持
verify_hostinteger是否验证连接的主机名是否与主机证书中的名称匹配。

可能的值:
0 - (默认) 不验证;
1 - 验证。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读
verify_peerinteger是否验证主机的证书是否有效。

可能的值:
0 - (默认) 不验证;
1 - 验证。

属性行为:
- 如果type设置为”HTTP 代理”,则为支持
- 继承对象时只读

HTTP 头部

头部对象具有以下属性:

属性类型描述
namestringHTTP头部名称。

属性行为:
- 必需
valuestring头部值。

属性行为:
- 必需

HTTP查询字段

查询字段对象定义了一个名称和值,用于指定URL参数。 它具有以下属性:

属性类型描述
name字符串参数的名称。

属性行为:
- 必需
value字符串参数值。

属性行为:
- 必需

LLD规则过滤器

LLD规则过滤器对象定义了一组条件,这些条件可用于过滤发现的对象。它具有以下属性:

属性类型描述
conditionsobject/array用于过滤结果的过滤器条件集合。条件将按照它们在公式中的顺序进行排序。

属性行为:
- 必需
evaltypeinteger过滤条件评估方法。

可能的值:
0 - 与/或;
1 - 与;
2 - 或;
3 - 自定义表达式。

属性行为:
- 必需
eval_formulastring用于评估过滤条件的生成表达式。该表达式包含ID,这些ID通过其formulaid引用特定的过滤条件。eval_formula的值对于具有自定义表达式的过滤器等于formula的值。

属性行为:
- 只读
formulastring用户定义的表达式,用于评估具有自定义表达式的过滤器的条件。表达式必须包含ID,这些ID通过其formulaid引用特定的过滤条件。在表达式中使用的ID必须与过滤条件中定义的完全匹配:不能有未使用或省略的条件。

属性行为:
- 如果evaltype设置为”自定义表达式”,则为必需

LLD规则过滤条件

LLD规则过滤条件对象定义了要对LLD宏的值执行的单独检查。它具有以下属性:

属性类型描述
macrostring要执行检查的LLD宏。

属性行为:
- 必需
valuestring要比较的值。

属性行为:
- 如果operator设置为”匹配正则表达式”或”不匹配正则表达式”,则为必需
formulaidstring用于从自定义表达式引用条件的任意唯一ID。只能包含大写字母。当修改过滤条件时,用户必须定义此ID,但在之后请求它们时将重新生成。

属性行为:
- 如果LLD规则过滤器对象evaltype设置为”自定义表达式”,则为必需
operatorinteger条件运算符。

可能的值:
8 - (默认) 匹配正则表达式;
9 - 不匹配正则表达式;
12 - 存在;
13 - 不存在。

要更好地理解如何使用不同类型的表达式进行过滤,请参阅discoveryrule.getdiscoveryrule.create方法页面上的示例。

LLD宏路径

LLD宏路径具有以下属性:

属性类型描述
lld_macrostringLLD宏。

属性行为:
- 必需
pathstring选择器将值分配给相应宏。

属性行为:
- 必需

LLD规则预处理

LLD规则预处理对象具有以下属性:

属性类型描述
typeinteger预处理选项类型。

可能的值:
5 - 正则表达式;
11 - XML XPath;
12 - JSONPath;
14 - 匹配正则表达式;
15 - 不匹配正则表达式;
16 - 检查JSON中的错误;
17 - 检查XML中的错误;
20 - 丢弃未变化的带心跳;
21 - JavaScript;
23 - Prometheus转JSON;
24 - CSV转JSON;
25 - 替换;
27 - XML转JSON;
28 - SNMP walk值;
29 - SNMP walk转JSON;
30 - SNMP获取值。

属性行为:
- 必需
paramsstring预处理选项使用的附加参数。多个参数用换行符(\n)分隔。

属性行为:
- 如果type设置为”正则表达式” (5), “XML XPath” (11), “JSONPath” (12), “匹配正则表达式” (14), “不匹配正则表达式” (15), “检查JSON中的错误” (16), “检查XML中的错误” (17), “丢弃未变化的带心跳” (20), “JavaScript” (21), “Prometheus转JSON” (23), “CSV转JSON” (24), “替换” (25), “SNMP walk值” (28), “SNMP walk转JSON” (29), 或 “SNMP获取值” (30),则为必需
error_handlerinteger预处理步骤失败时使用的操作类型。

可能的值:
0 - 错误消息由Zabbix服务器设置;
1 - 丢弃值;
2 - 设置自定义值;
3 - 设置自定义错误消息。

属性行为:
- 如果type设置为”正则表达式” (5), “XML XPath” (11), “JSONPath” (12), “匹配正则表达式” (14), “不匹配正则表达式” (15), “检查JSON中的错误” (16), “检查XML中的错误” (17), “Prometheus转JSON” (23), “CSV转JSON” (24), “XML转JSON” (27), “SNMP walk值” (28), “SNMP walk转JSON” (29), 或 “SNMP获取值” (30),则为必需
error_handler_paramsstring错误处理程序参数。

属性行为:
- 如果error_handler设置为”设置自定义值” 或 “设置自定义错误消息”,则为必需

以下是每种预处理类型支持的参数和错误处理程序:

预处理类型名称参数1参数2参数3支持的错误处理程序
5正则表达式模式1输出20, 1, 2, 3
11XML XPath路径30, 1, 2, 3
12JSONPath路径30, 1, 2, 3
14匹配正则表达式模式10, 1, 2, 3
15不匹配正则表达式模式10, 1, 2, 3
16检查JSON中的错误路径30, 1, 2, 3
17检查XML中的错误路径30, 1, 2, 3
20丢弃未变化的带心跳4, 5
21JavaScript脚本2
23Prometheus转JSON模式5, 60, 1, 2, 3
24CSV转JSON字符2字符20,10, 1, 2, 3
25替换搜索string2替换2
27XML转JSON0, 1, 2, 3
28SNMP walk值OID2格式:
0 - 不变
1 - 从十六进制STRING转UTF-8
2 - 从十六进制STRING转MAC
3 - 从位字段转integer
0, 1, 2, 3
29SNMP walk转JSON7字段名称2OID前缀2格式:
0 - 不变
1 - 从十六进制STRING转UTF-8
2 - 从十六进制STRING转MAC
3 - 从位字段转integer
0, 1, 2, 3
30SNMP获取值格式:
1 - 从十六进制STRING转UTF-8
2 - 从十六进制STRING转MAC
3 - 从位字段转integer
0, 1, 2, 3

1 正则表达式
2 string
3 JSONPath或XML XPath
4 正integer(支持时间后缀,例如30s, 1m, 2h, 1d)
5 用户宏
6 Prometheus模式,遵循语法: <metric name>{<label name>="<label value>", ...} == <value>。每个Prometheus模式组件(度量、标签名称、标签值和度量值)都可以是用户宏。
7 支持由新行字符分隔的多个”字段名称,OID前缀,格式记录”。

LLD规则覆盖

LLD规则覆盖对象定义了一组规则(过滤器、条件和操作),这些规则用于覆盖不同原型对象的属性。它具有以下属性:

属性类型描述
namestring唯一的覆盖名称。

属性行为:
- 必需
stepinteger覆盖的唯一顺序号。

属性行为:
- 必需
stopinteger如果匹配,则停止处理下一个覆盖。

可能的值:
0 - (默认) 不停止处理覆盖;
1 - 如果过滤器匹配,则停止处理覆盖。
filterobject覆盖过滤器。
operationsobject/array覆盖操作。

LLD规则覆盖过滤器

LLD规则覆盖过滤器对象定义了一组条件,如果这些条件与发现的对象匹配,则应用覆盖。它具有以下属性:

属性类型描述
conditionsobject/array用于匹配发现对象的覆盖过滤器条件集合。条件将按照它们在公式中的顺序进行排序。

属性行为:
- 必需
evaltypeinteger覆盖过滤器条件评估方法。

可能的值:
0 - 与/或;
1 - 与;
2 - 或;
3 - 自定义表达式。

属性行为:
- 必需
eval_formulastring用于评估覆盖过滤器条件的生成表达式。该表达式包含ID,这些ID通过其formulaid引用特定的覆盖过滤器条件。eval_formula的值对于具有自定义表达式的过滤器等于formula的值。

属性行为:
- 只读
formulastring用户定义的表达式,用于评估具有自定义表达式的覆盖过滤器的条件。表达式必须包含ID,这些ID通过其formulaid引用特定的覆盖过滤器条件。在表达式中使用的ID必须与覆盖过滤器条件中定义的完全匹配:不能有未使用或省略的条件。

属性行为:
- 如果evaltype设置为”自定义表达式”,则为必需

LLD规则覆盖过滤条件

LLD规则覆盖过滤条件对象定义了要对LLD宏的值执行的单独检查。它具有以下属性:

属性类型描述
macrostring要执行检查的LLD宏。

属性行为:
- 必需
valuestring要比较的值。

属性行为:
- 如果operator设置为”匹配正则表达式”或”不匹配正则表达式”,则为必需
formulaidstring用于从自定义表达式引用条件的任意唯一ID。只能包含大写字母。当修改过滤条件时,用户必须定义此ID,但在之后请求它们时将重新生成。

属性行为:
- 如果LLD规则覆盖过滤器对象evaltype设置为”自定义表达式”,则为必需
operatorinteger条件运算符。

可能的值:
8 - (默认) 匹配正则表达式;
9 - 不匹配正则表达式;
12 - 存在;
13 - 不存在。

LLD规则覆盖操作

LLD规则覆盖操作是条件和动作的组合,用于对原型对象执行。它具有以下属性:

属性类型描述
operationobjectinteger执行动作的发现对象类型。

可能的值:
0 - 监控项原型;
1 - 触发器原型;
2 - 图表原型;
3 - 主机原型。

属性行为:
- 必需
operatorinteger覆盖条件运算符。

可能的值:
0 - (默认) 等于;
1 - 不等于;
2 - 包含;
3 - 不包含;
8 - 匹配;
9 - 不匹配。
valuestring根据选定对象匹配监控项、触发器、图表或主机原型名称的模式。
opstatusobject监控项、触发器和主机原型对象的覆盖操作状态对象。
opdiscoverobject所有对象类型的覆盖操作发现状态对象。
opperiodobject监控项原型对象的覆盖操作周期(更新间隔)对象。
ophistoryobject监控项原型对象的覆盖操作历史对象。
optrendsobject监控项原型对象的覆盖操作趋势对象。
opseverityobject触发器原型对象的覆盖操作严重性对象。
optagobject/array触发器和主机原型对象的覆盖操作标签对象。
optemplateobject/数组主机原型对象的覆盖操作模板对象。
opinventoryobject主机原型对象的覆盖操作库存对象。
LLD规则覆盖操作状态

设置为被发现对象的LLD规则覆盖操作状态。它具有以下属性:

属性类型描述
status整数覆盖所选对象的状态。

可能的值:
0 - 创建时启用;
1 - 创建时禁用。

属性行为:
- 必需
LLD规则覆盖操作发现状态

设置为被发现对象的LLD规则覆盖操作发现状态。它具有以下属性:

属性类型描述
discoverinteger覆盖所选对象的发现状态。

可能的值:
0 - 是,继续发现对象;
1 - 否,将不发现新对象,并将现有对象标记为丢失。

属性行为:
- 必需
LLD规则覆盖操作周期

LLD规则覆盖操作周期是设置到被发现监控项的更新间隔值。 它具有以下属性:

属性类型描述
delaystring覆盖监控项原型的更新间隔。

接受秒或带后缀的时间单位(例如,30s, 1m, 2h, 1d),并且可以可选地接受一个或多个自定义间隔,所有这些都用分号分隔。自定义间隔可以是灵活间隔和计划间隔的混合。

接受用户宏或LLD宏。如果使用,值必须是单个宏。不支持多个宏或与文本混合的宏。灵活间隔可以写成两个宏,用正斜杠分隔(例如,{$FLEX_INTERVAL}/{$FLEX_PERIOD})。

示例:
1h;wd1-5h9-18;{$Macro1}/1-7,00:00-24:00;0/6-7,12:00-24:00;{$Macro2}/{$Macro3}

属性行为:
- 必需
LLD规则覆盖操作历史

设置为被发现监控项的LLD规则覆盖操作历史值。它具有以下属性:

属性类型描述
historystring覆盖监控项原型的历史记录,这是一个时间单位,表示历史数据应该被存储多久。也接受用户宏和LLD宏。

属性行为:
- 必需
LLD规则覆盖操作趋势

设置为被发现监控项的LLD规则覆盖操作趋势值。它具有以下属性:

属性类型描述
trendsstring覆盖监控项原型的趋势,这是一个时间单位,表示趋势数据应该被存储多久。也接受用户宏和LLD宏。

属性行为:
- 必需
LLD规则覆盖操作严重性

设置为被发现触发器的LLD规则覆盖操作严重性值。它具有以下属性:

属性类型描述
severityinteger覆盖触发器原型的严重性。

可能的值:
0 - (默认) 未分类;
1 - 信息;
2 - 警告;
3 - 一般;
4 - 高;
5 - 灾难。

属性行为:
- 必需
LLD规则覆盖操作标签

LLD规则覆盖操作标签对象包含设置到被发现对象的标签名称和值。它具有以下属性:

属性类型描述
tagstring新的标签名称。

属性行为:
- 必需
valuestring新的标签值。
LLD规则覆盖操作模板

与被发现主机相关联的LLD规则覆盖操作模板对象。它具有以下属性:

属性类型描述
templateidID覆盖主机原型链接模板的模板。

属性行为:
- 必需
LLD规则覆盖操作库存

设置为被发现主机的LLD规则覆盖操作库存模式值。它具有以下属性:

属性类型描述
inventory_modeinteger覆盖主机原型的库存模式。

可能的值:
-1 - 禁用;
0 - (默认) 手动;
1 - 自动。

属性行为:
- 必需