System.Net 指标
本文介绍使用 System.Net API 生成的 System.Diagnostics.Metrics 内置的网络指标。 有关基于备用
提示
有关如何收集、报告、扩充和测试 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
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 |
字符串 | HTTP 连接池中的 HTTP 连接状态。 |
active ;idle |
总是 |
network.protocol.version |
字符串 | 使用的 HTTP 协议的版本。 |
1.1 ;2 |
总是 |
server.address |
字符串 | HTTP 请求发送到 |
example.com |
总是 |
server.port |
int | HTTP 请求发送到 |
80 ;8080 ;443 |
如果未默认(80 方案的http ,则为 443 https ) |
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 请求发送到 |
example.com |
总是 |
server.port |
int | HTTP 请求发送到 |
80 ;8080 ;443 |
如果未默认(80 方案的http ,则为 443 https ) |
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 状态代码中 |
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 请求发送到 |
example.com |
总是 |
server.port |
int | HTTP 请求发送到 |
80 ;8080 ;443 |
取决于 .NET 版本。 [3] |
url.scheme |
字符串 | 标识已用协议的 URI 方案 组件。 |
http ;https ;ftp |
总是 |
[1] error.type
: 如果请求失败,该值将设置为以下值之一:
- 类型为 TaskCanceledException的异常名称。
- 指示客户端或服务器错误的状态代码,例如,
500
。 - 如果 HttpRequestException 与 HttpRequestError以外的
Unknown
发生,则蛇例中的枚举值,例如,name_resolution_error
。
[2] http.request.method
:http.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 请求发送到 |
example.com |
总是 |
server.port |
int | HTTP 请求发送到 |
80 ;8080 ;443 |
如果未默认(80 方案的http ,则为 443 https ) |
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 请求发送到 |
example.com |
总是 |
server.port |
int | HTTP 请求发送到 |
80 ;8080 ;443 |
如果未默认(80 方案的http ,则为 443 https ) |
url.scheme |
字符串 | 标识已用协议的 URI 方案 组件。 |
http ;https ;ftp |
总是 |
此指标计算被视为活动的请求数。 请求在 http.client.request.duration 检测测量的同一时间段处于活动状态。
从以下版本开始可用:.NET 8