ASP.NET 核心内置指标

本文介绍使用 System.Diagnostics.Metrics API 生成的 ASP.NET Core 的内置指标。 有关基于较旧 EventCounters API 的指标列表,请参阅 “可用计数器”。

有关如何收集、报告、扩充和测试 ASP.NET 核心指标的信息,请参阅 ASP.NET 核心指标

Microsoft.AspNetCore.Hosting

指标 Microsoft.AspNetCore.Hosting 报告有关 ASP.NET Core 收到的 HTTP 请求的高级信息:

指标:http.server.request.duration

名字 检测类型 单位(UCUM) 说明
http.server.request.duration 直方图 s 测量入站 HTTP 请求的持续时间。
特征 类型 说明 例子 状态
http.route 字符串 匹配的路由。 {controller}/{action}/
{id?}
如果可用。
error.type 字符串 描述操作结束的错误类。 timeout;name_resolution_error;500 如果请求已以错误结束。
http.request.method 字符串 HTTP 请求方法。 GET;POST;HEAD 始终
http.response.status_code 整数 (int) HTTP 响应状态代码 200 如果发送了一个。
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 3.1.1 始终
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https 始终
aspnetcore.request.is_unhandled 布尔值 如果应用程序管道未处理请求,则为 True。 true 如果请求未处理。

在 ASP.NET Core 的托管层测量的入站 HTTP 请求所用的时间。 基础 Web 主机具有以下功能后开始时间度量:

  • 充分分析入站网络流上的 HTTP 请求标头,以标识新请求。
  • 初始化上下文数据结构,如 HttpContext.

时间结束时间:

  • ASP.NET 核心处理程序管道已完成执行。
  • 已发送所有响应数据。
  • 正在释放请求的上下文数据结构。

使用 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 ]。

指标:http.server.active_requests

名字 检测类型 单位(UCUM) 说明
http.server.active_requests UpDownCounter {request} 度量当前正在进行的并发 HTTP 请求数。
特征 类型 说明 例子 状态
http.request.method 字符串 HTTP 请求方法。 [1] GET;POST;HEAD 始终
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https 始终

.

Microsoft.AspNetCore.Routing

指标 Microsoft.AspNetCore.Routing 报告有关 将 HTTP 请求路由 到 ASP.NET 核心终结点的信息:

指标:aspnetcore.routing.match_attempts

名字 检测类型 单位(UCUM) 说明
aspnetcore.routing.match_attempts 计数器 {match_attempt} 尝试与终结点匹配的请求数。
特征 类型 说明 例子 状态
aspnetcore.routing.match_status 字符串 匹配结果 success;failure 始终
aspnetcore.routing.is_fallback_route 布尔型 一个值,该值指示匹配的路由是否为回退路由。 True 如果已成功匹配路由。
http.route 字符串 匹配的路由 {controller}/{action}/
{id?}
如果已成功匹配路由。

.

Microsoft.AspNetCore.Diagnostics

指标 Microsoft.AspNetCore.Diagnostics 报告 来自 ASP.NET 核心错误处理中间件的诊断信息:

指标:aspnetcore.diagnostics.exceptions

名字 检测类型 单位(UCUM) 说明
aspnetcore.diagnostics.exceptions 计数器 {exception} 异常处理中间件捕获的异常数。
特征 类型 说明 例子 状态
aspnetcore.diagnostics.exception.result 字符串 ASP.NET 核心异常中间件处理结果 handled;unhandled 始终
aspnetcore.diagnostics.handler.type 字符串 处理异常的实现的 IExceptionHandler 全类型名称。 Contoso.MyHandler 如果此处理程序处理了异常。
exception.type 字符串 异常类型的全名。 System.OperationCanceledException;Contoso.MyException 始终

.

Microsoft.AspNetCore.RateLimiting

指标 Microsoft.AspNetCore.RateLimiting 报告 来自 ASP.NET 核心速率限制中间件的速率限制信息:

指标:aspnetcore.rate_limiting.active_request_leases

名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} 当前在保留速率限制租约的服务器上处于活动状态的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。

.

指标:aspnetcore.rate_limiting.request_lease.duration

名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.request_lease.duration 直方图 s 服务器上请求保留的速率限制租约的持续时间。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。

.

指标:aspnetcore.rate_limiting.queued_requests

名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} 当前排队等待获取速率限制租约的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。

.

指标:aspnetcore.rate_limiting.request.time_in_queue

名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.request.time_in_queue 直方图 s 请求在等待获取速率限制租约的队列中花费的时间。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
aspnetcore.rate_limiting.result 字符串 速率限制结果显示是获取租约还是包含拒绝原因。 acquired;request_canceled 始终

.

指标:aspnetcore.rate_limiting.requests

名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.requests 计数器 {request} 尝试获取速率限制租约的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
aspnetcore.rate_limiting.result 字符串 速率限制结果显示是获取租约还是包含拒绝原因。 acquired;request_canceled 始终

.

Microsoft.AspNetCore.HeaderParsing

指标 Microsoft.AspNetCore.HeaderParsing 报告 有关 ASP.NET Core 标头分析的信息:

指标:aspnetcore.header_parsing.parse_errors

名字 检测类型 单位(UCUM) 说明
aspnetcore.header_parsing.parse_errors 计数器 {parse_error} 分析 HTTP 请求标头时发生的错误数。
特征 类型 说明 例子 状态
aspnetcore.header_parsing.header.name 字符串 标头名称。 Content-Type 始终
error.type 字符串 错误消息。 Unable to parse media type value. 始终

.

指标:aspnetcore.header_parsing.cache_accesses

仅针对支持缓存的 HTTP 请求标头分析程序发出指标。

名字 检测类型 单位(UCUM) 说明
aspnetcore.header_parsing.cache_accesses 计数器 {cache_access} 访问存储已分析标头值的缓存的次数。
特征 类型 说明 例子 状态
aspnetcore.header_parsing.header.name 字符串 标头名称。 Content-Type 始终
aspnetcore.header_parsing.cache_access.type 字符串 一个值,该值指示是否在缓存中找到标头的值。 Hit;Miss 始终

.

Microsoft.AspNetCore.Server.Kestrel

指标 Microsoft.AspNetCore.Server.Kestrel 报告 来自 ASP.NET Core Kestrel Web 服务器的 HTTP 连接信息:

指标:kestrel.active_connections

名字 检测类型 单位(UCUM) 说明
kestrel.active_connections UpDownCounter {connection} 服务器上当前处于活动状态的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

.

指标:kestrel.connection.duration

名字 检测类型 单位(UCUM) 说明
kestrel.connection.duration 直方图 s 服务器上的连接持续时间。
特征 类型 说明 例子 状态
error.type 字符串 描述连接结束的错误类型,或连接管道期间引发的未经处理的异常类型。 可以在 Web 服务器指标的语义约定Kestrel中找到已知的连接错误。 connection_reset;invalid_request_headers;System.OperationCanceledException 如果连接以已知错误结束或引发异常。
network.protocol.name 字符串 OSI 应用程序层或非 OSI 等效层 http;web_sockets 始终
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 1.1;2 始终
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
tls.protocol.version 字符串 TLS 协议版本。 1.2;1.3 如果连接使用 TLS 进行保护。

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

当连接以已知错误结尾时,属性值 error.type 将设置为已知错误类型。 可以在 Web 服务器指标的语义约定Kestrel中找到已知的连接错误。

指标:kestrel.rejected_connections

名字 检测类型 单位(UCUM) 说明
kestrel.rejected_connections 计数器 {connection} 服务器拒绝的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

当当前活动计数超过配置 MaxConcurrentConnections的值时,将拒绝连接。

.

指标:kestrel.queued_connections

名字 检测类型 单位(UCUM) 说明
kestrel.queued_connections UpDownCounter {connection} 当前已排队且正在等待启动的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

.

指标:kestrel.queued_requests

名字 检测类型 单位(UCUM) 说明
kestrel.queued_requests UpDownCounter {request} 多路复用连接(HTTP/2 和 HTTP/3)上的 HTTP 请求数,这些请求当前已排队并正在等待启动。
特征 类型 说明 例子 状态
network.protocol.name 字符串 OSI 应用程序层或非 OSI 等效层 http;web_sockets 始终
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 1.1;2 始终
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

.

指标:kestrel.upgraded_connections

名字 检测类型 单位(UCUM) 说明
kestrel.upgraded_connections UpDownCounter {connection} 当前升级的连接数(WebSocket)。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

计数器仅跟踪 HTTP/1.1 连接。

.

指标:kestrel.tls_handshake.duration

名字 检测类型 单位(UCUM) 说明
kestrel.tls_handshake.duration 直方图 s 服务器上的 TLS 握手持续时间。
特征 类型 说明 例子 状态
error.type 字符串 异常类型的全名。 System.OperationCanceledException;Contoso.MyException 如果引发了异常。
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
tls.protocol.version 字符串 TLS 协议版本。 1.2;1.3 如果连接使用 TLS 进行保护。

使用 OpenTelemetry 时,此 metic 的默认存储桶设置为 [ 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 ]。

.

指标:kestrel.active_tls_handshakes

名字 检测类型 单位(UCUM) 说明
kestrel.active_tls_handshakes UpDownCounter {handshake} 服务器上当前正在进行的 TLS 握手数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

.

Microsoft.AspNetCore.Http.Connections

指标 Microsoft.AspNetCore.Http.Connections 报告 来自 ASP.NET 核心 SignalR的连接信息:

指标:signalr.server.connection.duration

名字 检测类型 单位(UCUM) 说明
signalr.server.connection.duration 直方图 s 服务器上的连接持续时间。
特征 类型 说明 例子 状态
signalr.connection.status 字符串 SignalR HTTP 连接关闭状态。 app_shutdown;timeout 始终
signalr.transport 字符串 SignalR 传输类型 web_sockets;long_polling 始终

.

价值 说明
normal_closure 连接正常关闭。
timeout 由于超时,连接已关闭。
app_shutdown 连接已关闭,因为应用正在关闭。

signalr.transport 是以下项之一:

价值 协议
server_sent_events 服务器发送的事件
long_polling 长轮询
web_sockets WebSocket

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

.

指标:signalr.server.active_connections

名字 检测类型 单位(UCUM) 说明
signalr.server.active_connections UpDownCounter {connection} 服务器上当前处于活动状态的连接数。
特征 类型 说明 例子 状态
signalr.connection.status 字符串 SignalR HTTP 连接关闭状态。 app_shutdown;timeout 始终
signalr.transport 字符串 SignalR 传输类型 web_sockets;long_polling 始终

.

Microsoft.AspNetCore.Authorization

指标 Microsoft.AspNetCore.Authorization 报告有关 ASP.NET Core 应用中 授权尝试 的信息:

指标:aspnetcore.authorization.attempts

名字 检测类型 单位(UCUM) 说明
aspnetcore.authorization.attempts 计数器 {request} 尝试授权的请求总数。
特征 类型 说明 例子 状态
user.is_authenticated 布尔型 请求是否来自经过身份验证的用户 true Required
aspnetcore.authorization.policy 字符串 授权策略的名称。 AtLeast21;EmployeeOnly Conditionally required 如果使用授权策略
aspnetcore.authorization.result 字符串 授权是成功还是失败。 success;failure Conditionally Required 如果在授权期间未引发异常
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果请求已以错误结束

.

Microsoft.AspNetCore.Authentication

指标 Microsoft.AspNetCore.Authentication 报告有关 ASP.NET Core 应用中 的身份验证 的信息:

指标:aspnetcore.authentication.authenticate.duration

名字 检测类型 单位(UCUM) 说明
aspnetcore.authentication.authenticate.duration 直方图 s 请求的身份验证持续时间。
特征 类型 说明 例子 状态
aspnetcore.authentication.result 字符串 身份验证结果。 success;failure;none;_OTHER Conditionally Required 如果请求未以错误结尾,则为
aspnetcore.authentication.scheme 字符串 身份验证方案的名称。 Bearer;Cookies Conditionally Required 如果请求未以错误结尾,则为
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果身份验证失败或请求已以错误结束

.

指标:aspnetcore.authentication.challenges

名字 检测类型 单位(UCUM) 说明
aspnetcore.authentication.challenges 计数器 {request} 对方案提出质询的总次数。
特征 类型 说明 例子 状态
aspnetcore.authentication.scheme 字符串 身份验证方案的名称。 Bearer;Cookies Conditionally Required 如果请求未以错误结尾,则为
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果请求已以错误结束

.

指标:aspnetcore.authentication.forbids

名字 检测类型 单位(UCUM) 说明
aspnetcore.authentication.forbids 计数器 {request} 经过身份验证的用户尝试访问其不允许访问的资源的总次数。
特征 类型 说明 例子 状态
aspnetcore.authentication.scheme 字符串 身份验证方案的名称。 Bearer;Cookies Conditionally Required 如果请求未以错误结尾,则为
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果请求已以错误结束

.

指标:aspnetcore.authentication.sign_ins

名字 检测类型 单位(UCUM) 说明
aspnetcore.authentication.sign_ins 计数器 {request} 主体使用方案登录的总次数。
特征 类型 说明 例子 状态
aspnetcore.authentication.scheme 字符串 身份验证方案的名称。 Bearer;Cookies Conditionally Required 如果请求未以错误结尾,则为
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果请求已以错误结束

.

指标:aspnetcore.authentication.sign_outs

名字 检测类型 单位(UCUM) 说明
aspnetcore.authentication.sign_outs 计数器 {request} 主体使用方案注销的总次数。
特征 类型 说明 例子 状态
aspnetcore.authentication.scheme 字符串 身份验证方案的名称。 Bearer;Cookies Conditionally Required 如果请求未以错误结尾,则为
error.type 字符串 异常类型的全名。 System.InvalidOperationException;Contoso.MyException Conditionally Required 如果请求已以错误结束

本文介绍使用 System.Diagnostics.Metrics API 生成的 ASP.NET Core 的内置指标。 有关基于较旧 EventCounters API 的指标列表,请参阅 “可用计数器”。

小提示

有关如何收集、报告、扩充和测试 ASP.NET 核心指标的详细信息,请参阅 使用 ASP.NET Core 指标

Microsoft.AspNetCore.Hosting

指标 Microsoft.AspNetCore.Hosting 报告有关 ASP.NET Core 收到的 HTTP 请求的高级信息:

指标:http.server.request.duration
名字 检测类型 单位(UCUM) 说明
http.server.request.duration 直方图 s 测量入站 HTTP 请求的持续时间。
特征 类型 说明 例子 状态
http.route 字符串 匹配的路由。 {controller}/{action}/{id?} 如果可用。
error.type 字符串 描述操作结束的错误类。 timeout;name_resolution_error;500 如果请求已以错误结束。
http.request.method 字符串 HTTP 请求方法。 GET;POST;HEAD 始终
http.response.status_code 整数 (int) HTTP 响应状态代码 200 如果发送了一个。
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 3.1.1 始终
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https 始终
aspnetcore.request.is_unhandled 布尔值 如果应用程序管道未处理请求,则为 True。 true 如果请求未处理。

在 ASP.NET Core 的托管层测量的入站 HTTP 请求所用的时间。 基础 Web 主机具有以下功能后开始时间度量:

  • 充分分析入站网络流上的 HTTP 请求标头,以标识新请求。
  • 初始化上下文数据结构,如 HttpContext.

时间结束时间:

  • ASP.NET 核心处理程序管道已完成执行。
  • 已发送所有响应数据。
  • 正在释放请求的上下文数据结构。

使用 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 ]。

指标:http.server.active_requests
名字 检测类型 单位(UCUM) 说明
http.server.active_requests UpDownCounter {request} 度量当前正在进行的并发 HTTP 请求数。
特征 类型 说明 例子 状态
http.request.method 字符串 HTTP 请求方法。 [1] GET;POST;HEAD 始终
url.scheme 字符串 标识已用协议的 URI 方案 组件。 http;https 始终

Microsoft.AspNetCore.Routing

指标 Microsoft.AspNetCore.Routing 报告有关 将 HTTP 请求路由 到 ASP.NET 核心终结点的信息:

指标:aspnetcore.routing.match_attempts
名字 检测类型 单位(UCUM) 说明
aspnetcore.routing.match_attempts 计数器 {match_attempt} 尝试与终结点匹配的请求数。
特征 类型 说明 例子 状态
aspnetcore.routing.match_status 字符串 匹配结果 success;failure 始终
aspnetcore.routing.is_fallback_route 布尔型 一个值,该值指示匹配的路由是否为回退路由。 True 如果已成功匹配路由。
http.route 字符串 匹配的路由 {controller}/{action}/{id?} 如果已成功匹配路由。

Microsoft.AspNetCore.Diagnostics

指标 Microsoft.AspNetCore.Diagnostics 报告 来自 ASP.NET 核心错误处理中间件的诊断信息:

指标:aspnetcore.diagnostics.exceptions
名字 检测类型 单位(UCUM) 说明
aspnetcore.diagnostics.exceptions 计数器 {exception} 异常处理中间件捕获的异常数。
特征 类型 说明 例子 状态
aspnetcore.diagnostics.exception.result 字符串 ASP.NET 核心异常中间件处理结果 handled;unhandled 始终
aspnetcore.diagnostics.handler.type 字符串 处理异常的实现的 IExceptionHandler 全类型名称。 Contoso.MyHandler 如果此处理程序处理了异常。
exception.type 字符串 异常类型的全名。 System.OperationCanceledException;Contoso.MyException 始终

Microsoft.AspNetCore.RateLimiting

指标 Microsoft.AspNetCore.RateLimiting 报告 来自 ASP.NET 核心速率限制中间件的速率限制信息:

指标:aspnetcore.rate_limiting.active_request_leases
名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} 当前在保留速率限制租约的服务器上处于活动状态的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
指标:aspnetcore.rate_limiting.request_lease.duration
名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.request_lease.duration 直方图 s 服务器上请求保留的速率限制租约的持续时间。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
指标:aspnetcore.rate_limiting.queued_requests
名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} 当前排队等待获取速率限制租约的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
指标:aspnetcore.rate_limiting.request.time_in_queue
名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.request.time_in_queue 直方图 s 请求在等待获取速率限制租约的队列中花费的时间。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
aspnetcore.rate_limiting.result 字符串 速率限制结果显示是获取租约还是包含拒绝原因。 acquired;request_canceled 始终
指标:aspnetcore.rate_limiting.requests
名字 检测类型 单位(UCUM) 说明
aspnetcore.rate_limiting.requests 计数器 {request} 尝试获取速率限制租约的请求数。
特征 类型 说明 例子 状态
aspnetcore.rate_limiting.policy 字符串 速率限制策略名称。 fixed;sliding;token 如果请求的匹配终结点具有速率限制策略。
aspnetcore.rate_limiting.result 字符串 速率限制结果显示是获取租约还是包含拒绝原因。 acquired;request_canceled 始终

Microsoft.AspNetCore.HeaderParsing

指标 Microsoft.AspNetCore.HeaderParsing 报告 有关 ASP.NET Core 标头分析的信息:

指标:aspnetcore.header_parsing.parse_errors
名字 检测类型 单位(UCUM) 说明
aspnetcore.header_parsing.parse_errors 计数器 {parse_error} 分析 HTTP 请求标头时发生的错误数。
特征 类型 说明 例子 状态
aspnetcore.header_parsing.header.name 字符串 标头名称。 Content-Type 始终
error.type 字符串 错误消息。 Unable to parse media type value. 始终
指标:aspnetcore.header_parsing.cache_accesses

仅针对支持缓存的 HTTP 请求标头分析程序发出指标。

名字 检测类型 单位(UCUM) 说明
aspnetcore.header_parsing.cache_accesses 计数器 {cache_access} 访问存储已分析标头值的缓存的次数。
特征 类型 说明 例子 状态
aspnetcore.header_parsing.header.name 字符串 标头名称。 Content-Type 始终
aspnetcore.header_parsing.cache_access.type 字符串 一个值,该值指示是否在缓存中找到标头的值。 Hit;Miss 始终

Microsoft.AspNetCore.Server.Kestrel

指标 Microsoft.AspNetCore.Server.Kestrel 报告 来自 ASP.NET Core Kestrel Web 服务器的 HTTP 连接信息:

指标:kestrel.active_connections
名字 检测类型 单位(UCUM) 说明
kestrel.active_connections UpDownCounter {connection} 服务器上当前处于活动状态的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
指标:kestrel.connection.duration
名字 检测类型 单位(UCUM) 说明
kestrel.connection.duration 直方图 s 服务器上的连接持续时间。
特征 类型 说明 例子 状态
error.type 字符串 描述连接结束的错误类型,或连接管道期间引发的未经处理的异常类型。 可以在 Web 服务器指标的语义约定Kestrel中找到已知的连接错误。 connection_reset;invalid_request_headers;System.OperationCanceledException 如果连接以已知错误结束或引发异常。
network.protocol.name 字符串 OSI 应用程序层或非 OSI 等效层 http;web_sockets 始终
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 1.1;2 始终
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
tls.protocol.version 字符串 TLS 协议版本。 1.2;1.3 如果连接使用 TLS 进行保护。

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

当连接以已知错误结尾时,属性值 error.type 将设置为已知错误类型。 可以在 Web 服务器指标的语义约定Kestrel中找到已知的连接错误。

指标:kestrel.rejected_connections
名字 检测类型 单位(UCUM) 说明
kestrel.rejected_connections 计数器 {connection} 服务器拒绝的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

当当前活动计数超过配置 MaxConcurrentConnections的值时,将拒绝连接。

指标:kestrel.queued_connections
名字 检测类型 单位(UCUM) 说明
kestrel.queued_connections UpDownCounter {connection} 当前已排队且正在等待启动的连接数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
指标:kestrel.queued_requests
名字 检测类型 单位(UCUM) 说明
kestrel.queued_requests UpDownCounter {request} 多路复用连接(HTTP/2 和 HTTP/3)上的 HTTP 请求数,这些请求当前已排队并正在等待启动。
特征 类型 说明 例子 状态
network.protocol.name 字符串 OSI 应用程序层或非 OSI 等效层 http;web_sockets 始终
network.protocol.version 字符串 中指定的 network.protocol.name协议的版本。 1.1;2 始终
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
指标:kestrel.upgraded_connections
名字 检测类型 单位(UCUM) 说明
kestrel.upgraded_connections UpDownCounter {connection} 当前升级的连接数(WebSocket)。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

计数器仅跟踪 HTTP/1.1 连接。

指标:kestrel.tls_handshake.duration
名字 检测类型 单位(UCUM) 说明
kestrel.tls_handshake.duration 直方图 s 服务器上的 TLS 握手持续时间。
特征 类型 说明 例子 状态
error.type 字符串 异常类型的全名。 System.OperationCanceledException;Contoso.MyException 如果引发了异常。
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp
tls.protocol.version 字符串 TLS 协议版本。 1.2;1.3 如果连接使用 TLS 进行保护。

使用 OpenTelemetry 时,此 metic 的默认存储桶设置为 [ 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 ]。

指标:kestrel.active_tls_handshakes
名字 检测类型 单位(UCUM) 说明
kestrel.active_tls_handshakes UpDownCounter {handshake} 服务器上当前正在进行的 TLS 握手数。
特征 类型 说明 例子 状态
network.transport 字符串 OSI 传输层进程间通信方法 tcp;unix 始终
network.type 字符串 OSI 网络层 或非 OSI 等效项。 ipv4;ipv6 如果传输为 tcpudp
server.address 字符串 如果没有反向 DNS 查找,则服务器地址域名可用;否则为 IP 地址或 Unix 域套接字名称。 example.com 始终
server.port 整数 (int) 服务器端口号 80;8080;443 如果传输为 tcpudp

Microsoft.AspNetCore.Http.Connections

指标 Microsoft.AspNetCore.Http.Connections 报告 来自 ASP.NET 核心 SignalR的连接信息:

指标:signalr.server.connection.duration
名字 检测类型 单位(UCUM) 说明
signalr.server.connection.duration 直方图 s 服务器上的连接持续时间。
特征 类型 说明 例子 状态
signalr.connection.status 字符串 SignalR HTTP 连接关闭状态。 app_shutdown;timeout 始终
signalr.transport 字符串 SignalR 传输类型 web_sockets;long_polling 始终
价值 说明
normal_closure 连接正常关闭。
timeout 由于超时,连接已关闭。
app_shutdown 连接已关闭,因为应用正在关闭。

signalr.transport 是以下项之一:

价值 协议
server_sent_events 服务器发送的事件
long_polling 长轮询
web_sockets WebSocket

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

指标:signalr.server.active_connections
名字 检测类型 单位(UCUM) 说明
signalr.server.active_connections UpDownCounter {connection} 服务器上当前处于活动状态的连接数。
特征 类型 说明 例子 状态
signalr.connection.status 字符串 SignalR HTTP 连接关闭状态。 app_shutdown;timeout 始终
signalr.transport 字符串 SignalR 传输类型 web_sockets;long_polling 始终