System.Net 指标

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

提示

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

System.Net.NameResolution

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

指标:dns.lookup.duration
名字 检测类型 单位 描述
dns.lookup.duration 直方图 s 测量执行 DNS 查找所需的时间。
属性 类型 描述 例子 存在
dns.question.name 字符串 要查询的名称。 www.example.com;dot.net 总是
error.type 字符串 已知错误字符串或发生的异常的完整类型名称。 host_not_found;System.Net.Sockets.SocketException 如果发生错误

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

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

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

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

使用 OpenTelemetry 时,此指标的默认存储桶设置为 [ 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 字符串 HTTP 连接池中的 HTTP 连接状态。 active;idle 总是
network.protocol.version 字符串 使用的 HTTP 协议的版本。 1.1;2 总是
server.address 字符串 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 如果未默认(80 方案的http,则为 443https
network.peer.address 字符串 套接字连接的对等 IP 地址。 10.5.3.2 总是
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https;ftp 总是

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

从以下版本开始可用:.NET 8

指标:http.client.connection.duration
名字 检测类型 单位(UCUM) 描述
http.client.connection.duration 直方图 s 成功建立出站 HTTP 连接的持续时间。
属性 类型 描述 例子 存在
network.protocol.version 字符串 使用的 HTTP 协议的版本。 1.1;2 总是
server.address 字符串 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 如果未默认(80 方案的http,则为 443https
network.peer.address 字符串 套接字连接的 IP 地址。 10.5.3.2 总是
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https;ftp 总是

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

由于此指标正在跟踪连接持续时间,理想情况下,http 连接用于多个请求,因此存储桶应比用于请求持续时间的存储桶长。 例如,使用 [ 0.01、0.02、0.05、0.1、0.2、0.5、1、2、5、10、30、60、120、300 ] 提供 5 分钟大桶。

从以下版本开始可用:.NET 8

指标:http.client.request.duration
名字 检测类型 单位(UCUM) 描述
http.client.request.duration 直方图 s 出站 HTTP 请求的持续时间。
属性 类型 描述 例子 存在
error.type 字符串 请求失败原因:snake_case或完整异常类型或 HTTP 4xx/5xx 状态代码中 HTTP 请求错误之一。 System.Threading.Tasks.TaskCanceledException;name_resolution_error;secure_connection_error;404 如果请求失败。
http.request.method 字符串 HTTP 请求方法。 GET;POST;HEAD;_OTHER [2] 总是
http.response.status_code int HTTP 响应状态代码 200 如果收到响应。
network.protocol.version 字符串 使用的 HTTP 协议的版本。 1.1;2 如果收到响应。
server.address 字符串 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 取决于 .NET 版本。 [3]
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https;ftp 总是

[1] error.type 如果请求失败,该值将设置为以下值之一:

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

[3] server.port 值存在依赖于版本:

  • .NET 8:如果不是默认的,则为 < 方案,
  • .NET 9+:始终存在

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

使用 OpenTelemetry 时,此指标的默认存储桶设置为 [ 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 等待可用连接的队列上请求所花费的时间量。
属性 类型 描述 例子 存在
http.request.method 字符串 HTTP 请求方法。 GET;POST;HEAD 总是
network.protocol.version 字符串 使用的 HTTP 协议的版本。 1.1;2 总是
server.address 字符串 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 如果未默认(80 方案的http,则为 443https
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https;ftp 总是

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

从以下版本开始可用:.NET 8

指标:http.client.active_requests
名字 检测类型 单位(UCUM) 描述
http.client.active_requests UpDownCounter {request} 活动 HTTP 请求数。
属性 类型 描述 例子 存在
http.request.method 字符串 HTTP 请求方法。 GET;POST;HEAD 总是
server.address 字符串 HTTP 请求发送到 “URI 源”的主机标识符。 example.com 总是
server.port int HTTP 请求发送到 “URI 源”的端口标识符。 80;8080;443 如果未默认(80 方案的http,则为 443https
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https;ftp 总是

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

从以下版本开始可用:.NET 8