.NET 中的内置活动
这是分布式跟踪 活动 本机发出的参考。NET 的内置 ActivitySource 实例。
System.Net 活动
提示
有关收集和报告 System.Net
跟踪的综合指南,请参阅 .NET中的网络分布式跟踪。
HTTP 客户端请求
SocketsHttpHandler 并 HttpClientHandler 按照 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 上可用,但其 Status、DisplayName和属性(标记)仅从 .NET 9 开始填充。 在早期版本中,建议使用 OpenTelemetry.Instrumentation.Http 包来填补内置检测的空白。
属性(标记)
属性 | 类型 | 描述 | 例子 | 存在 |
---|---|---|---|---|
http.request.method |
string |
HTTP 请求方法。 [1] |
GET ;POST ;HEAD ;_OTHER |
总是 |
server.address |
string |
HTTP 请求发送到 |
example.com ;10.1.2.80 |
总是 |
server.port |
int |
HTTP 请求发送到 |
80 ;8080 ;443 |
总是 |
url.full |
string |
根据 RFC3986 [2] 描述网络资源的绝对 URL | https://www.foo.bar/search?q=* |
总是 |
error.type |
string |
请求失败原因:snake_case或完整异常类型或 HTTP 4xx/5xx 状态代码中 |
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中 |
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或完整异常类型中 |
System.Net.Sockets.SocketException ;name_resolution_error ;secure_connection_error |
如果连接尝试失败。 |
network.peer.address |
string |
套接字连接的对等 IP 地址。 | 10.5.3.2 |
如果连接尝试成功。 |
server.address |
string |
初始 HTTP 请求发送到 |
example.com |
总是 |
server.port |
int |
初始 HTTP 请求发送到 |
总是 | |
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(SocketError、host_not_found
、try_again
、no_recovery
)或完整异常名称中的 DNS 相关 address_family_not_supported
。
套接字连接 (实验性)
此活动描述通过 Socket 或 Connect建立 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 |
协议信息可用时。 |