HTTP 指标的语义约定
状态: 混合
本节描述的约定是 HTTP 特有的。当发生 HTTP 操作时,将生成关于这些操作的指标事件并进行报告,以提供对操作的洞察。通过向指标事件添加 HTTP 属性,可以实现精细化的过滤。
免责声明:这些是最初的 HTTP 指标工具和属性,但未来可能会添加更多。
警告 使用 本文档 v1.20.0(或更早版本)的现有 HTTP 仪器化
- 在 HTTP 语义约定被标记为稳定之前,**不应**更改其默认发出的 HTTP 或网络约定版本(HTTP 稳定化将包括一组核心网络约定(也用于 HTTP 仪表化)的稳定化)。约定包括但不限于属性、指标和跨度名称以及度量单位。
- 在现有主版本中,应引入一个名为
OTEL_SEMCONV_STABILITY_OPT_IN的环境变量,该变量是一个逗号分隔的类别特定值列表(例如,http、databases、messaging)。值列表包括:
http- 发出新的、稳定的 HTTP 和网络约定,并停止发出仪表化先前发出的旧的实验性 HTTP 和网络约定。http/dup- 同时发出旧的和稳定的 HTTP 和网络约定,实现无缝过渡。- 默认行为(如果没有指定这些值之一)是继续发出仪表化先前发出的旧的实验性 HTTP 和网络约定版本。
- 注意:如果同时存在这两个值,
http/dup的优先级高于http。- 在开始发出两组约定后,应至少维护现有主版本(至少进行安全修补)六个月。
- 应在下一个主版本中删除该环境变量。
HTTP 服务器
指标:http.server.request.duration
此指标是必需的。
当此指标与 HTTP 服务器跨度一起报告时,指标值应与 HTTP 服务器跨度持续时间相同。
此指标 SHOULD 使用 ExplicitBucketBoundaries,其值为 [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ]。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.server.request.duration | Histogram | s | HTTP 服务器请求的持续时间。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
url.scheme | 必需 | 字符串 | 标识所使用的协议的 URI scheme 组件。[2] | http; https | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束的错误类别。[3] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
http.route | 有条件必需 仅当可用时 | 字符串 | 请求匹配的路由模板。这必须是低基数的,并且包括所有静态路径段,动态路径段用占位符表示。[4] | /users/:userID?; my-controller/my-action/{id?} | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[7] | 1.0; 1.1; 2; 3 | |
server.address | 选择加入 | 字符串 | 接收请求的本地 HTTP 服务器的名称。[8] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 选择加入 | int | 接收请求的本地 HTTP 服务器的端口。[9] | 80; 8080; 443 | |
user_agent.synthetic.type | 选择加入 | 字符串 | 指定合成流量的类别,例如测试或机器人。[10] | bot; test |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] url.scheme: 原始客户端请求的 scheme,如果已知(例如,来自 Forwarded#proto、X-Forwarded-Proto 或类似的标头)。否则,为直接对等请求的 scheme。
[3] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[4] http.route: 当 HTTP 服务器框架不支持此属性时,不得填充此属性,因为路由属性应具有低基数,并且 URI 路径不能替代它。如果存在 应用程序根目录,则应包含它。
静态路径段是路由模板中具有固定、低基数值的ส่วน。这包括字面字符串,如 /users/,以及受限于有限、预定义值集合的占位符,例如 {controller} 或 {action}。
动态路径段是占位符,用于存储具有高基数且不受预定义列表约束的值,就像静态路径段一样。
仪器应使用相应 Web 框架提供的路由信息。它们应选择最精确的路由信息来源,并可以支持自定义路由格式。仪器应记录使用的格式和获取路由字符串的 API。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
[8] server.address: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[9] server.port: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[10] user_agent.synthetic.type: 此属性可以从 user_agent.original 属性的内容派生。填充此属性的组件负责确定其认为是合成机器人或测试流量的内容。此属性可用于自识别目的,或用于检测为合成请求结果的遥测数据。此属性对于区分真实客户端流量和机器人或测试生成的合成流量很有用。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
user_agent.synthetic.type具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
bot | 机器人来源。 | |
test | 合成测试来源。 |
指标:http.server.active_requests
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.server.active_requests | UpDownCounter | {request} | 活动 HTTP 服务器请求的数量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
url.scheme | 必需 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https | |
server.address | 选择加入 | 字符串 | 接收请求的本地 HTTP 服务器的名称。[2] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 选择加入 | int | 接收请求的本地 HTTP 服务器的端口。[3] | 80; 8080; 443 |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] server.address: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[3] server.port: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
指标:http.server.request.body.size
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.server.request.body.size | Histogram | 每个调用的最大内存使用量的分布。 | HTTP 服务器请求体的 Size。[1] |
[1]: 请求有效载荷体的大小(以字节为单位)。这是传输的字节数,不包括标头,通常(但不总是)是 Content-Length 标头。对于使用传输编码的请求,这应该是压缩后的大小。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
url.scheme | 必需 | 字符串 | 标识所使用的协议的 URI scheme 组件。[2] | http; https | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束的错误类别。[3] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
http.route | 有条件必需 仅当可用时 | 字符串 | 请求匹配的路由模板。这必须是低基数的,并且包括所有静态路径段,动态路径段用占位符表示。[4] | /users/:userID?; my-controller/my-action/{id?} | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[7] | 1.0; 1.1; 2; 3 | |
server.address | 选择加入 | 字符串 | 接收请求的本地 HTTP 服务器的名称。[8] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 选择加入 | int | 接收请求的本地 HTTP 服务器的端口。[9] | 80; 8080; 443 | |
user_agent.synthetic.type | 选择加入 | 字符串 | 指定合成流量的类别,例如测试或机器人。[10] | bot; test |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] url.scheme: 原始客户端请求的 scheme,如果已知(例如,来自 Forwarded#proto、X-Forwarded-Proto 或类似的标头)。否则,为直接对等请求的 scheme。
[3] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[4] http.route: 当 HTTP 服务器框架不支持此属性时,不得填充此属性,因为路由属性应具有低基数,并且 URI 路径不能替代它。如果存在 应用程序根目录,则应包含它。
静态路径段是路由模板中具有固定、低基数值的ส่วน。这包括字面字符串,如 /users/,以及受限于有限、预定义值集合的占位符,例如 {controller} 或 {action}。
动态路径段是占位符,用于存储具有高基数且不受预定义列表约束的值,就像静态路径段一样。
仪器应使用相应 Web 框架提供的路由信息。它们应选择最精确的路由信息来源,并可以支持自定义路由格式。仪器应记录使用的格式和获取路由字符串的 API。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
[8] server.address: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[9] server.port: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[10] user_agent.synthetic.type: 此属性可以从 user_agent.original 属性的内容派生。填充此属性的组件负责确定其认为是合成机器人或测试流量的内容。此属性可用于自识别目的,或用于检测为合成请求结果的遥测数据。此属性对于区分真实客户端流量和机器人或测试生成的合成流量很有用。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
user_agent.synthetic.type具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
bot | 机器人来源。 | |
test | 合成测试来源。 |
指标:http.server.response.body.size
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.server.response.body.size | Histogram | 每个调用的最大内存使用量的分布。 | HTTP 服务器响应体的 Size。[1] |
[1]: 响应有效载荷体的大小(以字节为单位)。这是传输的字节数,不包括标头,通常(但不总是)是 Content-Length 标头。对于使用传输编码的请求,这应该是压缩后的大小。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
url.scheme | 必需 | 字符串 | 标识所使用的协议的 URI scheme 组件。[2] | http; https | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束的错误类别。[3] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
http.route | 有条件必需 仅当可用时 | 字符串 | 请求匹配的路由模板。这必须是低基数的,并且包括所有静态路径段,动态路径段用占位符表示。[4] | /users/:userID?; my-controller/my-action/{id?} | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[7] | 1.0; 1.1; 2; 3 | |
server.address | 选择加入 | 字符串 | 接收请求的本地 HTTP 服务器的名称。[8] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 选择加入 | int | 接收请求的本地 HTTP 服务器的端口。[9] | 80; 8080; 443 | |
user_agent.synthetic.type | 选择加入 | 字符串 | 指定合成流量的类别,例如测试或机器人。[10] | bot; test |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] url.scheme: 原始客户端请求的 scheme,如果已知(例如,来自 Forwarded#proto、X-Forwarded-Proto 或类似的标头)。否则,为直接对等请求的 scheme。
[3] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[4] http.route: 当 HTTP 服务器框架不支持此属性时,不得填充此属性,因为路由属性应具有低基数,并且 URI 路径不能替代它。如果存在 应用程序根目录,则应包含它。
静态路径段是路由模板中具有固定、低基数值的ส่วน。这包括字面字符串,如 /users/,以及受限于有限、预定义值集合的占位符,例如 {controller} 或 {action}。
动态路径段是占位符,用于存储具有高基数且不受预定义列表约束的值,就像静态路径段一样。
仪器应使用相应 Web 框架提供的路由信息。它们应选择最精确的路由信息来源,并可以支持自定义路由格式。仪器应记录使用的格式和获取路由字符串的 API。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
[8] server.address: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[9] server.port: 请参阅 设置 server.address 和 server.port 属性。
警告 由于此属性基于 HTTP 标头,启用此属性可能会使攻击者能够触发基数限制,从而降低指标的有效性。
[10] user_agent.synthetic.type: 此属性可以从 user_agent.original 属性的内容派生。填充此属性的组件负责确定其认为是合成机器人或测试流量的内容。此属性可用于自识别目的,或用于检测为合成请求结果的遥测数据。此属性对于区分真实客户端流量和机器人或测试生成的合成流量很有用。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
user_agent.synthetic.type具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
bot | 机器人来源。 | |
test | 合成测试来源。 |
HTTP 客户端
指标:http.client.request.duration
此指标是必需的。
当此指标与 HTTP 客户端跨度一起报告时,指标值应与 HTTP 客户端跨度持续时间相同。
此指标 SHOULD 使用 ExplicitBucketBoundaries,其值为 [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ]。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.request.duration | Histogram | s | HTTP 客户端请求的持续时间。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查询即可获得);否则,为 IP 地址或 Unix 套接字名称。[2] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[3] | 80; 8080; 443 | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束时的一类错误。[4] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[7] | 1.0; 1.1; 2; 3 | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https | |
url.template | 选择加入 | 字符串 | 低基数的 绝对路径引用模板。[8] | /users/{id}; /users/:id; /users?id={id} |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] server.address: 在 HTTP/1.1 中,当 请求目标 以其 绝对形式传递时,server.address 应与请求目标的 host 组件匹配。
在所有其他情况下,server.address 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 host 组件匹配。
[3] server.port: 对于 HTTP/1.1,当 请求目标 以其 绝对形式传递时,server.port 应与请求目标的 port 组件匹配。
在所有其他情况下,server.port 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 port 组件匹配。
[4] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
[8] url.template: url.template 必须是低基数的。它通常在 HTTP 客户端上不可用,但应用程序或专门的 HTTP 仪器化可能知道它。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
指标:http.client.request.body.size
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.request.body.size | Histogram | 每个调用的最大内存使用量的分布。 | HTTP 客户端请求体的 Size。[1] |
[1]: 请求有效载荷体的大小(以字节为单位)。这是传输的字节数,不包括标头,通常(但不总是)是 Content-Length 标头。对于使用传输编码的请求,这应该是压缩后的大小。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查询即可获得);否则,为 IP 地址或 Unix 套接字名称。[2] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[3] | 80; 8080; 443 | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束时的一类错误。[4] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
url.template | 有条件必需 如果可用。 | 字符串 | 低基数的 绝对路径引用模板。[7] | /users/{id}; /users/:id; /users?id={id} | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[8] | 1.0; 1.1; 2; 3 | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] server.address: 在 HTTP/1.1 中,当 请求目标 以其 绝对形式传递时,server.address 应与请求目标的 host 组件匹配。
在所有其他情况下,server.address 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 host 组件匹配。
[3] server.port: 对于 HTTP/1.1,当 请求目标 以其 绝对形式传递时,server.port 应与请求目标的 port 组件匹配。
在所有其他情况下,server.port 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 port 组件匹配。
[4] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] url.template: url.template 必须是低基数的。它通常在 HTTP 客户端上不可用,但应用程序或专门的 HTTP 仪器化可能知道它。
[8] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
指标:http.client.response.body.size
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.response.body.size | Histogram | 每个调用的最大内存使用量的分布。 | HTTP 客户端响应体的 Size。[1] |
[1]: 响应有效载荷体的大小(以字节为单位)。这是传输的字节数,不包括标头,通常(但不总是)是 Content-Length 标头。对于使用传输编码的请求,这应该是压缩后的大小。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.request.method | 必需 | 字符串 | HTTP 请求方法。[1] | GET; POST; HEAD | |
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查询即可获得);否则,为 IP 地址或 Unix 套接字名称。[2] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[3] | 80; 8080; 443 | |
error.type | 有条件必需 如果请求以错误结束。 | 字符串 | 描述操作结束时的一类错误。[4] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
http.response.status_code | 有条件必需 仅当收到/发送时。 | int | HTTP 响应状态码. | 200 | |
network.protocol.name | 有条件地必需 [5] | 字符串 | OSI 应用层或非 OSI 等效项。[6] | http;spdy | |
url.template | 有条件必需 如果可用。 | 字符串 | 低基数的 绝对路径引用模板。[7] | /users/{id}; /users/:id; /users?id={id} | |
network.protocol.version | 推荐 | 字符串 | 网络通信实际使用的协议版本。[8] | 1.0; 1.1; 2; 3 | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https |
[1] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
[2] server.address: 在 HTTP/1.1 中,当 请求目标 以其 绝对形式传递时,server.address 应与请求目标的 host 组件匹配。
在所有其他情况下,server.address 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 host 组件匹配。
[3] server.port: 对于 HTTP/1.1,当 请求目标 以其 绝对形式传递时,server.port 应与请求目标的 port 组件匹配。
在所有其他情况下,server.port 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 port 组件匹配。
[4] error.type: 如果请求在发送或接收响应状态码之前失败,则 error.type 应设置为异常类型(其完全限定类名,如果适用)或特定于组件的低基数错误标识符。
如果已发送或接收响应状态码,并且根据 HTTP 跨度状态定义,状态码指示错误,则 error.type 应设置为状态码数字(表示为字符串)、异常类型(如果抛出)或特定于组件的错误标识符。
error.type 值应是可预测的,并且应具有低基数。仪器化应记录其报告的错误列表。
一个仪器库内的 error.type 的基数应较低,但聚合来自多个仪器库和应用程序的数据的遥测消费者应准备好在查询时(在未应用任何其他过滤器时)error.type 具有高基数。
如果请求已成功完成,仪器化不应设置 error.type。
[5] network.protocol.name: 如果不为 http 且 network.protocol.version 已设置。
[6] network.protocol.name: 该值应标准化为小写。
[7] url.template: url.template 必须是低基数的。它通常在 HTTP 客户端上不可用,但应用程序或专门的 HTTP 仪器化可能知道它。
[8] network.protocol.version: 如果协议版本需要协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则不应设置此属性。
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |
指标:http.client.open_connections
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.open_connections | UpDownCounter | {connection} | 客户端上当前活动或空闲的出站 HTTP 连接数。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
http.connection.state | 必需 | 字符串 | HTTP 连接池中 HTTP 连接的状态。 | active; idle | |
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查找即可获得);否则,是 IP 地址或 Unix 域套接字名称。[1] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[2] | 80; 8080; 443 | |
network.peer.address | 推荐 | 字符串 | 网络连接的对端地址 - IP 地址或 Unix 域套接字名称。 | 10.1.2.80;/tmp/my.sock | |
network.protocol.version | 推荐 | 字符串 | 用于网络通信的协议的实际版本。[3] | 1.1; 2 | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https |
[1] server.address: 从客户端观察时,并且当通过中间设备通信时,server.address 应代表任何中间设备(例如代理)后面的服务器地址,如果可用。
[2] server.port: 从客户端观察,并且在通过中介通信时,server.port 应表示任何中介(例如代理)后面的服务器端口,如果可用的话。
[3] network.protocol.version: 如果协议版本受协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则此属性不应设置。
http.connection.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的 {value};否则,可以 {value} 使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
active | active 状态。 | |
idle | idle 状态。 |
指标:http.client.connection.duration
此指标应使用 ExplicitBucketBoundaries 的 [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] 指定。
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.connection.duration | Histogram | s | 成功建立的出站 HTTP 连接的持续时间。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查找即可获得);否则,是 IP 地址或 Unix 域套接字名称。[1] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[2] | 80; 8080; 443 | |
network.peer.address | 推荐 | 字符串 | 网络连接的对端地址 - IP 地址或 Unix 域套接字名称。 | 10.1.2.80;/tmp/my.sock | |
network.protocol.version | 推荐 | 字符串 | 用于网络通信的协议的实际版本。[3] | 1.1; 2 | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https |
[1] server.address: 从客户端观察时,并且当通过中间设备通信时,server.address 应代表任何中间设备(例如代理)后面的服务器地址,如果可用。
[2] server.port: 从客户端观察,并且在通过中介通信时,server.port 应表示任何中介(例如代理)后面的服务器端口,如果可用的话。
[3] network.protocol.version: 如果协议版本受协商(例如,使用 ALPN),则此属性应设置为协商后的版本。如果实际协议版本未知,则此属性不应设置。
指标:http.client.active_requests
状态: 开发中
此指标是可选的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
http.client.active_requests | UpDownCounter | {request} | 活动 HTTP 请求的数量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
server.address | 必需 | 字符串 | 服务器域名(如果无需反向 DNS 查找即可获得);否则,是 IP 地址或 Unix 域套接字名称。[1] | example.com;10.1.2.80;/tmp/my.sock | |
server.port | 必需 | int | 服务器端口号。[2] | 80; 8080; 443 | |
url.template | 有条件必需 如果可用。 | 字符串 | 低基数的 绝对路径引用模板。[3] | /users/{id}; /users/:id; /users?id={id} | |
http.request.method | 推荐 | 字符串 | HTTP 请求方法。[4] | GET; POST; HEAD | |
url.scheme | 选择加入 | 字符串 | The URI 方案组件,用于标识所使用的协议。 | http; https |
[1] server.address: 在 HTTP/1.1 中,当 请求目标 以其 绝对形式传递时,server.address 应与请求目标的 host 组件匹配。
在所有其他情况下,server.address 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 host 组件匹配。
[2] server.port: 对于 HTTP/1.1,当 请求目标 以其 绝对形式传递时,server.port 应与请求目标的 port 组件匹配。
在所有其他情况下,server.port 应与 HTTP/1.1 中 Host 标头或 HTTP/2 和 HTTP/3 中的 :authority 伪标头的 port 组件匹配。
[3] url.template: url.template 必须是低基数的。它通常在 HTTP 客户端上不可用,但应用程序或专门的 HTTP 仪器化可能知道它。
[4] http.request.method: HTTP 请求方法值应被仪器化“已知”。默认情况下,此约定定义“已知”方法为 RFC9110 中列出的方法,RFC5789 中定义的 PATCH 方法,以及 httpbis-safe-method-w-body 中定义的 QUERY 方法。
如果 HTTP 请求方法仪器不了解,则必须将 http.request.method 属性设置为 _OTHER。
如果 HTTP 仪器最终可能将有效的 HTTP 请求方法转换为 _OTHER,则必须提供一种方法来覆盖已知 HTTP 方法的列表。如果此覆盖是通过环境变量完成的,则环境变量必须命名为 OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS,并支持一个逗号分隔的、区分大小写的已知 HTTP 方法列表(此列表必须完全覆盖默认已知方法,而不是默认方法之外的已知方法列表)。
HTTP 方法名称区分大小写,http.request.method 属性值必须精确匹配一个已知的 HTTP 方法名称。对于将 HTTP 方法视为不区分大小写的特定 Web 框架的仪器,应填充一个规范等效值。进行此操作的跟踪仪器还必须将 http.request.method_original 设置为原始值。
http.request.method 具有以下一组知名值。如果适用其中一个,则必须使用相应的名称;否则,可以使用自定义名称。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 仪器不了解的任何 HTTP 方法。 | |
CONNECT | CONNECT 方法。 | |
DELETE | DELETE 方法。 | |
GET | GET 方法。 | |
HEAD | HEAD 方法。 | |
OPTIONS | OPTIONS 方法。 | |
PATCH | PATCH 方法。 | |
POST | POST 方法。 | |
PUT | PUT 方法。 | |
QUERY | QUERY 方法。 | |
TRACE | TRACE 方法。 |