System.Net 指标

本文介绍使用 System.Diagnostics.Metrics API 生成的 System.Net 的内置网络指标。 有关基于备用 EventCounters API 的指标列表,请参阅 .NET 中的已知 EventCounters

提示

有关如何收集、报告、扩充和测试 System.Net 指标的详细信息,请参阅 .NET 中的网络指标

System.Net.NameResolution

System.Net.NameResolution 指标报告来自 Dns 的 DNS 名称解析:

指标:dns.lookup.duration
名称 检测类型 Unit 说明
dns.lookup.duration 直方图 s 度量执行 DNS 查找所需的时间。
Attribute 类型 说明 示例 状态
dns.question.name string 要查询的名称。 www.example.com; dot.net 始终
error.type string 已知错误字符串或发生的异常的完整类型名称。 host_not_found; System.Net.Sockets.SocketException 如果发生错误

此指标测量发出 DNS 请求所需的时间。 这些请求可以通过调用 Dns 上的方法或者间接地在 HttpClient 等类型上的更高级别 API 中发生。

执行 DNS 查找时出现的大多数错误会引发 SocketException。 为了更好地消除常见错误案例的歧义,将在 error.type 中为具有特定 SocketErrorCode 的套接字异常提供显式错误名称:

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

将具有任何其他 SocketError 值的套接字异常报告为 System.Net.Sockets.SocketException

使用 OpenTelemetry 时,此指标的默认 Bucket 设置为 [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]。

可用起始版本:.NET 8

System.Net.Http

System.Net.Http 指标报告来自 System.Net.Http 的 HTTP 请求和连接信息:

指标:http.client.open_connections
名称 检测类型 单位 (UCUM) 说明
http.client.open_connections UpDownCounter {connection} 客户端上当前处于活动或空闲状态的出站 HTTP 连接数
属性 类型 说明 示例 状态
http.connection.state string HTTP 连接池中 HTTP 连接的状态。 active; idle 始终
network.protocol.version string 使用的应用程序层协议的版本。 1.1; 2 始终
server.address string HTTP 请求所发往的“URI 源”的主机标识符。 example.com 始终
server.port int HTTP 请求所发往的“URI 源”的端口识别符。 80; 8080; 443 如果未默认(对于 http80,对于 https 则为 443
network.peer.address string 套接字连接的对等 IP 地址。 10.5.3.2 始终
url.scheme string 标识所使用协议的 URI 方案组件。 http; https; ftp Always

当配置为使用默认值 SocketsHttpHandler 时,HttpClient 将维护用于发送 HTTP 消息的网络连接的缓存池。 此指标会计算池中当前连接数。 活动连接正在处理活动请求。 活动连接可以传输数据或等待客户端或服务器。 空闲连接不处理任何请求,但会保持打开状态,以便可以更快地处理将来的请求。

可用起始版本:.NET 8

指标:http.client.connection.duration
名称 检测类型 单位 (UCUM) 说明
http.client.connection.duration 直方图 s 成功建立出站 HTTP 连接的持续时间。
属性 类型 说明 示例 状态
network.protocol.version string 使用的应用程序层协议的版本。 1.1; 2 始终
server.address string HTTP 请求所发往的“URI 源”的主机标识符。 example.com 始终
server.port int HTTP 请求所发往的“URI 源”的端口识别符。 80; 8080; 443 如果未默认(对于 http80,对于 https 则为 443
network.peer.address string 套接字连接的 IP 地址。 10.5.3.2 Always
url.scheme string 标识所使用协议的 URI 方案组件。 http; https; ftp 始终

仅当将 HttpClient 配置为使用默认值 SocketsHttpHandler 时,才会捕获此指标。

由于此指标用于跟踪连接持续时间,并且理想情况下 http 连接用于多个请求,因此该 Bucket 应该比用于请求持续时间的 Bucket 更长。 例如,使用 [0.01、0.02、0.05、0.1、0.2、0.5、1、2、5、10、30、60、120、300] 可提供 5 分钟的 Bucket 上限。

可用起始版本:.NET 8

指标:http.client.request.duration
名称 检测类型 单位 (UCUM) 说明
http.client.request.duration 直方图 s 出站 HTTP 请求的持续时间。
属性 类型 说明 示例 状态
error.type string 请求失败原因:HTTP 请求错误之一、完整异常类型或 HTTP 4xx/5xx 状态代码。 System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 如果请求失败。
http.request.method string HTTP 请求方法。 GET; POST; HEAD 始终
http.response.status_code int HTTP 响应状态代码 200 如果收到一个。
network.protocol.version string 使用的应用程序层协议的版本。 1.1; 2 如果已收到响应。
server.address string HTTP 请求所发往的“URI 源”的主机标识符。 example.com 始终
server.port int HTTP 请求所发往的“URI 源”的端口识别符。 80; 8080; 443 如果未默认(对于 http80,对于 https 则为 443
url.scheme string 标识所使用协议的 URI 方案组件。 http; https; ftp Always

HTTP 客户端请求持续时间测量基础客户端处理程序完成请求所需的时间。 完成请求包括从网络流读取响应标头的时间。 它不包括读取响应正文所用的时间。

使用 OpenTelemetry 时,此指标的默认 Bucket 设置为 [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]。

可用起始版本:.NET 8

提示

此指标可以进行扩充

指标:http.client.request.time_in_queue
名称 检测类型 单位 (UCUM) 说明
http.client.request.time_in_queue 直方图 s 请求用于排队等待可用连接的时间量。
Attribute 类型 说明 示例 状态
http.request.method string HTTP 请求方法。 GET; POST; HEAD 始终
network.protocol.version string 使用的应用程序层协议的版本。 1.1; 2 始终
server.address string HTTP 请求所发往的“URI 源”的主机标识符。 example.com 始终
server.port int HTTP 请求所发往的“URI 源”的端口识别符。 80; 8080; 443 如果未默认(对于 http80,对于 https 则为 443
url.scheme string 标识所使用协议的 URI 方案组件。 http; https; ftp 始终

如果配置为使用默认值 SocketsHttpHandlerHttpClient 将使用网络连接池发送 HTTP 请求。 如果所有连接忙于处理其他请求,则新请求将置于队列中,并等待网络连接可用。 此检测可度量在通过网络发送任何内容之前,HTTP 请求在该队列中等待的时间。

可用起始版本:.NET 8

指标:http.client.active_requests
名称 检测类型 单位 (UCUM) 说明
http.client.active_requests UpDownCounter {request} 活动 HTTP 请求数。
属性 类型 说明 示例 状态
http.request.method string HTTP 请求方法。 GET; POST; HEAD 始终
server.address string HTTP 请求所发往的“URI 源”的主机标识符。 example.com 始终
server.port int HTTP 请求所发往的“URI 源”的端口识别符。 80; 8080; 443 如果未默认(对于 http80,对于 https 则为 443
url.scheme string 标识所使用协议的 URI 方案组件。 http; https; ftp Always

此指标计算被视为处于活动状态的请求数。 请求在由 http.client.request.duration 检测度量的同一时间段内处于活动状态。

可用起始版本:.NET 8