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
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
指标: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 |
如果未默认(对于 http 为 80 ,对于 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 |
如果未默认(对于 http 为 80 ,对于 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 |
如果未默认(对于 http 为 80 ,对于 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 |
如果未默认(对于 http 为 80 ,对于 https 则为 443 ) |
url.scheme |
string | 标识所使用协议的 URI 方案组件。 | http ; https ; ftp |
始终 |
如果配置为使用默认值 SocketsHttpHandler,HttpClient 将使用网络连接池发送 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 |
如果未默认(对于 http 为 80 ,对于 https 则为 443 ) |
url.scheme |
string | 标识所使用协议的 URI 方案组件。 | http ; https ; ftp |
Always |
此指标计算被视为处于活动状态的请求数。 请求在由 http.client.request.duration 检测度量的同一时间段内处于活动状态。
可用起始版本:.NET 8