.NET 中的内置活动

这是分布式跟踪 活动 本机发出的参考。NET 的内置 ActivitySource 实例。

System.Net 活动

提示

有关收集和报告 System.Net 跟踪的综合指南,请参阅 .NET中的网络分布式跟踪。

HTTP 客户端请求

SocketsHttpHandlerHttpClientHandler 按照 OpenTelemetry HTTP 客户端语义约定中定义的建议报告 HTTP 客户端请求活动。 它描述在基础处理程序完成请求的时间间隔内由 HttpClient发送重载发送的 HTTP 请求。 完成请求包括从网络流读取响应标头的时间。 它不包括读取响应正文所用的时间。 SocketsHttpHandler 可能会重试请求,例如,在连接失败或 HTTP 版本降级时。 重试不会报告为单独的 HTTP 客户端请求 活动。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ System.Net.Http System.Net.Http.HttpRequestOut {HTTP method}

注意

System.Net.Http.HttpRequestOut 活动实际上在早期版本的 .NET 上可用,但其 StatusDisplayName和属性(标记)仅从 .NET 9 开始填充。 在早期版本中,建议使用 OpenTelemetry.Instrumentation.Http 包来填补内置检测的空白。

属性(标记)

属性 类型 描述 例子 存在
http.request.method string HTTP 请求方法。 [1] GET;POST;HEAD;_OTHER 总是
server.address string HTTP 请求发送到 “URI 源”的主机标识符。 example.com;10.1.2.80 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 总是
url.full string 根据 RFC3986 [2] 描述网络资源的绝对 URL https://www.foo.bar/search?q=* 总是
error.type string 请求失败原因:snake_case或完整异常类型或 HTTP 4xx/5xx 状态代码中 HTTP 请求错误之一。 System.OperationCanceledException;name_resolution_error;secure_connection_error;404 如果请求失败。
http.request.method_original string 请求行中客户端发送的原始 HTTP 方法。 ACL;foo 如果 http.request.method 不是已知的方法。
http.response.status_code int HTTP 响应状态代码 200 如果收到响应。
network.protocol.version string 使用的 HTTP 协议的版本。 1.1;2 如果收到响应。

[1] http.request.method 如果方法是 RFC9110中列出的已知方法之一,则该值包含方法名称;否则,该值为 _OTHER。 用户提供的方法名称以不区分大小写的方式映射到已知名称。 例如,如果用户提供名称 GeT,它将映射到 GET,并且不会填充 http.request.method_original

[2] url.full 为了避免泄露机密,默认情况下将编辑该值:整个查询将替换为 * 字符,并删除用户信息 & 片段。 有关详细信息和选择退出开关,请参阅 URI 修订文档

HTTP 客户端请求:等待连接(实验性)

此活动是 HTTP 客户端请求 活动的子级。 它表示相应请求在请求队列中等待可用连接的时间间隔。 如果请求传入时池中提供了免费连接,则不会 等待连接 活动。 请注意,等待连接 不表示实际连接建立;HTTP 连接设置 活动建模。 SocketsHttpHandler 可能会重试请求,例如,在连接失败或 HTTP 版本降级时。 重试未报告为单独的 HTTP 客户端请求 活动;但是,每次新的连接尝试都将导致新的 等待父请求活动下的连接 活动。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ Experimental.System.Net.Http.Connections Experimental.System.Net.Http.Connections.WaitForConnection HTTP wait_for_connection {address}:{port}

提示

从池获取连接所需的时间也由 http.client.request.time_in_queue 指标报告。

警告

此活动是实验性的。 将来的版本可能会更改或删除它。

属性(标记)

属性 类型 描述 例子 存在
error.type string 连接失败原因:snake_case中 HTTP 请求错误之一或完整的异常类型。 System.OperationCanceledException;name_resolution_error;secure_connection_error 如果连接尝试失败。

HTTP 连接设置(实验性)

此活动描述建立 HTTP 连接。 通常,这包括解析 DNS、建立套接字连接和执行 TLS 握手所需的时间。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ Experimental.System.Net.Http.Connections Experimental.System.Net.Http.Connections.ConnectionSetup HTTP connection_setup {address}:{port}

HTTP 客户端请求HTTP 连接设置 活动之间没有父子关系;后者将始终是根活动,位于单独的跟踪中。 但是,如果由 HTTP 连接设置表示的连接尝试 导致 HTTP 连接成功,并且请求会选取该连接来提供服务,则检测会将 ActivityLink 添加到 HTTP 客户端请求 活动,该活动指向 HTTP 连接设置 活动。 也就是说,每个请求都链接到为请求提供服务的连接。

注意

如果 HTTP 连接设置 失败,则不会链接到任何 HTTP 客户端请求

警告

此活动是实验性的。 将来的版本可能会更改或删除它。

属性(标记)

属性 类型 描述 例子 存在
error.type string 连接失败原因:snake_case或完整异常类型中 HTTP 请求错误之一。 System.Net.Sockets.SocketException;name_resolution_error;secure_connection_error 如果连接尝试失败。
network.peer.address string 套接字连接的对等 IP 地址。 10.5.3.2 如果连接尝试成功。
server.address string 初始 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int 初始 HTTP 请求发送到 “URI 源”的端口标识符。 总是
url.scheme string 标识已用协议的 URI 方案 组件。 http;https 总是

DNS 查找(实验性)

此活动描述通过 Dns 调用执行的 DNS 查找。 它对应于托管调用,而不是基础 OS 解析程序完成的物理 DNS 查找。 当报告 DNS 查找 活动以及 HTTP 连接设置 活动时,DNS 查找 将成为 HTTP 连接设置的子级。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ Experimental.System.Net.NameResolution Experimental.System.Net.NameResolution.DnsLookup DNS [reverse] lookup {question}

提示

DNS 查找持续时间也由 dns.lookup.duration 指标报告。

警告

此活动是实验性的。 将来的版本可能会更改或删除它。

属性(标记)

属性 类型 描述 例子 存在
error.type string 错误代码或异常名称。 [1] host_not_found 如果查找失败。
dns.answers string[] 解析的 IP 地址列表(用于 DNS 查找)或包含域名的单个元素(用于反向查找)。 ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] 如果查找成功。
dns.question.name string 要查询的域名或 IP 地址。 example.com 总是

[1]: 该值是snake_case(SocketErrorhost_not_foundtry_againno_recovery)或完整异常名称中的 DNS 相关 address_family_not_supported

套接字连接 (实验性)

此活动描述通过 SocketConnect建立 ConnectAsync 连接。 当报告 套接字连接 活动以及 HTTP 连接设置 活动时,套接字连接 将成为 HTTP 连接设置的子级。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ Experimental.System.Net.Sockets Experimental.System.Net.Sockets.Connect socket connect {address}[:{port}]

警告

此活动是实验性的。 将来的版本可能会更改或删除它。

属性(标记)

属性 类型 描述 例子 存在
error.type string snake_case 中的 SocketError address_already_in_use;connection_refused 如果套接字连接尝试失败。
network.peer.address string 网络连接的对等地址 - IP 地址或 Unix 域套接字名称。 10.5.3.2;/tmp/my.sock IP 和 UDS 套接字。
network.peer.port int IP 连接的对等端口号。 65123 IP 套接字。
network.transport string OSI 传输层进程间通信方法 tcp;udp;unix IP 和 UDS 套接字。
network.type string OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 IP 套接字。

TLS 握手(实验性)

此活动描述通过 SslStream身份验证方法执行的 TLS 客户端或服务器握手。 当 TLS 握手 活动报告客户端身份验证以及 HTTP 连接设置 活动时,TLS 握手 将成为 HTTP 连接设置的子级。

可用性 ActivitySource 名称 OperationName DisplayName
.NET 9+ Experimental.System.Net.Security Experimental.System.Net.Security.TlsHandshake TLS client handshake {host} -or- TLS server handshake

警告

此活动是实验性的。 将来的版本可能会更改或删除它。

属性(标记)

属性 类型 描述 例子 存在
error.type string 描述操作结束的错误类。 System.Net.Security.Authentication.AuthenticationException;System.OperationCanceledException 如果握手失败。
server.address string TLS 握手期间在“客户端 Hello”消息中使用的 服务器名称指示(SNI) example.com 作为客户端进行身份验证时。
tls.protocol.name string 从协商 SSL/TLS 协议版本的原始字符串分析的规范化小写协议名称 ssl;tls 协议信息可用时。
tls.protocol.version string 从协商 SSL/TLS 协议版本的原始字符串分析的版本的数字部分 1.2;1.3 协议信息可用时。