ASP.NET Principais métricas
Artigo 11/16/2024
8 contribuidores
Comentários
Neste artigo
Este artigo descreve as métricas internas para ASP.NET Core produzidas usando a System.Diagnostics.Metrics API. Para obter uma lista de métricas com base na API EventCounters mais antiga, consulte aqui .
Gorjeta
Para obter mais informações sobre como coletar, relatar, enriquecer e testar métricas ASP.NET Core, consulte Usando métricas ASP.NET Core .
Microsoft.AspNetCore.Hosting
As Microsoft.AspNetCore.Hosting
métricas relatam informações de alto nível sobre solicitações HTTP recebidas pelo ASP.NET Core:
Métrica: http.server.request.duration
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
http.server.request.duration
Histograma
s
Mede a duração das solicitações HTTP de entrada.
Atributo
Tipo
Description
Exemplos
Presença
http.route
string
A rota combinada.
{controller}/{action}/{id?}
Se estiver disponível.
error.type
string
Descreve uma classe de erro com a qual a operação terminou.
timeout
; name_resolution_error
; 500
Se a solicitação tiver terminado com um erro.
http.request.method
string
Método de solicitação HTTP.
GET
; POST
; HEAD
Sempre
http.response.status_code
número inteiro
Código de status da resposta HTTP.
200
Se um foi enviado.
network.protocol.version
string
Versão do protocolo especificado em network.protocol.name
.
3.1.1
Sempre
url.scheme
string
O componente do esquema de URI que identifica o protocolo usado.
http
; https
Sempre
aspnetcore.request.is_unhandled
Boolean
True quando a solicitação não foi tratada pelo pipeline de aplicativos.
true
Se o pedido não foi tratado.
O tempo usado para lidar com uma solicitação HTTP de entrada medido na camada de hospedagem do ASP.NET Core. A medição do tempo começa assim que o host subjacente tem:
Suficientemente analisados os cabeçalhos de solicitação HTTP no fluxo de rede de entrada para identificar a nova solicitação.
Inicializadas as estruturas de dados de contexto, como o HttpContext .
O tempo termina quando:
O pipeline do manipulador ASP.NET Core terminou a execução.
Todos os dados de resposta foram enviados.
As estruturas de dados de contexto para a solicitação estão sendo descartadas.
Ao usar OpenTelemetry, os buckets padrão para essa métrica são definidos como [ 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 ].
Disponível a partir de: .NET 8.0.
Métrica: http.server.active_requests
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
http.server.active_requests
UpDownCounter
{request}
Mede o número de solicitações HTTP simultâneas que estão atualmente em andamento.
Atributo
Tipo
Description
Exemplos
Presença
http.request.method
string
Método de solicitação HTTP. [1]
GET
; POST
; HEAD
Sempre
url.scheme
string
O componente do esquema de URI que identifica o protocolo usado.
http
; https
Sempre
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Routing
As Microsoft.AspNetCore.Routing
métricas relatam informações sobre o roteamento de solicitações HTTP para ASP.NET pontos de extremidade principais:
Métrica: aspnetcore.routing.match_attempts
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.routing.match_attempts
Contador
{match_attempt}
Número de solicitações que foram tentadas para corresponder a um ponto de extremidade.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.routing.match_status
string
Resultado da partida
success
; failure
Sempre
aspnetcore.routing.is_fallback_route
boolean
Um valor que indica se a rota correspondente é uma rota de fallback.
True
Se uma rota foi correspondida com êxito.
http.route
string
A rota correspondente
{controller}/{action}/{id?}
Se uma rota foi correspondida com êxito.
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Diagnostics
As Microsoft.AspNetCore.Diagnostics
métricas relatam informações de diagnóstico do middleware de tratamento de erros ASP.NET Core:
Métrica: aspnetcore.diagnostics.exceptions
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.diagnostics.exceptions
Contador
{exception}
Número de exceções detetadas pelo middleware de tratamento de exceções.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.diagnostics.exception.result
string
ASP.NET Resultado da manipulação de middleware de exceção principal
handled
; unhandled
Sempre
aspnetcore.diagnostics.handler.type
string
Nome completo do tipo da IExceptionHandler
implementação que manipulou a exceção.
Contoso.MyHandler
Se a exceção foi tratada por este manipulador.
exception.type
string
O nome completo do tipo de exceção.
System.OperationCanceledException
; Contoso.MyException
Sempre
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.RateLimiting
As Microsoft.AspNetCore.RateLimiting
métricas relatam informações que limitam a taxa de ASP.NET middleware de limitação de taxa principal:
Métrica: aspnetcore.rate_limiting.active_request_leases
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.rate_limiting.active_request_leases
UpDownCounter
{request}
Número de solicitações que estão atualmente ativas no servidor que possuem uma concessão de limitação de taxa.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.rate_limiting.policy
string
Nome da política de limitação de taxa.
fixed
; sliding
; token
Se o ponto de extremidade correspondente para a solicitação tivesse uma política de limitação de taxa.
Disponível a partir de: .NET 8.0.
Métrica: aspnetcore.rate_limiting.request_lease.duration
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.rate_limiting.policy
string
Nome da política de limitação de taxa.
fixed
; sliding
; token
Se o ponto de extremidade correspondente para a solicitação tivesse uma política de limitação de taxa.
Disponível a partir de: .NET 8.0.
Métrica: aspnetcore.rate_limiting.queued_requests
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.rate_limiting.queued_requests
UpDownCounter
{request}
Número de solicitações que estão atualmente na fila aguardando para adquirir uma taxa limitando a locação.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.rate_limiting.policy
string
Nome da política de limitação de taxa.
fixed
; sliding
; token
Se o ponto de extremidade correspondente para a solicitação tivesse uma política de limitação de taxa.
Disponível a partir de: .NET 8.0.
Métrica: aspnetcore.rate_limiting.request.time_in_queue
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.rate_limiting.policy
string
Nome da política de limitação de taxa.
fixed
; sliding
; token
Se o ponto de extremidade correspondente para a solicitação tivesse uma política de limitação de taxa.
aspnetcore.rate_limiting.result
string
O resultado da limitação da taxa mostra se a locação foi adquirida ou contém um motivo de rejeição.
acquired
; request_canceled
Sempre
Disponível a partir de: .NET 8.0.
Métrica: aspnetcore.rate_limiting.requests
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.rate_limiting.requests
Contador
{request}
Número de solicitações que tentaram adquirir uma taxa limitando a locação.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.rate_limiting.policy
string
Nome da política de limitação de taxa.
fixed
; sliding
; token
Se o ponto de extremidade correspondente para a solicitação tivesse uma política de limitação de taxa.
aspnetcore.rate_limiting.result
string
O resultado da limitação da taxa mostra se a locação foi adquirida ou contém um motivo de rejeição.
acquired
; request_canceled
Sempre
Disponível a partir de: .NET 8.0.
As Microsoft.AspNetCore.HeaderParsing
métricas relatam informações sobre ASP.NET análise de cabeçalho principal:
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.header_parsing.parse_errors
Contador
{parse_error}
Número de erros que ocorreram ao analisar cabeçalhos de solicitação HTTP.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.header_parsing.header.name
string
O nome do cabeçalho.
Content-Type
Sempre
error.type
string
A mensagem de erro.
Unable to parse media type value.
Sempre
Disponível a partir de: .NET 8.0.
A métrica é emitida apenas para analisadores de cabeçalho de solicitação HTTP que suportam cache.
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
aspnetcore.header_parsing.cache_accesses
Contador
{cache_access}
Número de vezes que um cache que armazena valores de cabeçalho analisados foi acessado.
Atributo
Tipo
Description
Exemplos
Presença
aspnetcore.header_parsing.header.name
string
O nome do cabeçalho.
Content-Type
Sempre
aspnetcore.header_parsing.cache_access.type
string
Um valor que indica se o valor do cabeçalho foi encontrado no cache ou não.
Hit
; Miss
Sempre
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Server.Kestrel
As Microsoft.AspNetCore.Server.Kestrel
métricas relatam informações de conexão HTTP de ASP.NET servidor Web Core Kestrel:
Métrica: kestrel.active_connections
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.active_connections
UpDownCounter
{connection}
Número de conexões que estão atualmente ativas no servidor.
Atributo
Tipo
Description
Exemplos
Presença
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
Disponível a partir de: .NET 8.0.
Métrica: kestrel.connection.duration
Atributo
Tipo
Description
Exemplos
Presença
error.type
string
Descreve um tipo de erro com o qual a conexão terminou ou o tipo de exceção não tratada lançada durante o pipeline de conexão. Erros de conexão conhecidos podem ser encontrados em Convenções Semânticas para métricas de servidor web Kestrel.
connection_reset
; invalid_request_headers
; System.OperationCanceledException
Se a conexão terminou com um erro conhecido ou uma exceção foi lançada.
network.protocol.name
string
Camada de aplicação OSI ou equivalente não-OSI.
http
; web_sockets
Sempre
network.protocol.version
string
Versão do protocolo especificado em network.protocol.name
.
1.1
; 2
Sempre
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
tls.protocol.version
string
Versão do protocolo TLS.
1.2
; 1.3
Se a conexão estiver protegida com TLS.
Como essa métrica está rastreando a duração da conexão e, idealmente, as conexões http são usadas para várias solicitações, os buckets devem ser mais longos do que aqueles usados para durações de solicitação. Por exemplo, usar [ 0,01, 0,02, 0,05, 0,1, 0,2, 0,5, 1, 2, 5, 10, 30, 60, 120, 300] fornece um balde superior de 5 minutos.
A partir do .NET 9, quando uma conexão termina com um erro conhecido, o valor do error.type
atributo é definido como o tipo de erro conhecido. Erros de conexão conhecidos podem ser encontrados em Convenções Semânticas para métricas de servidor web Kestrel.
Disponível a partir de: .NET 8.
Métrica: kestrel.rejected_connections
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.rejected_connections
Contador
{connection}
Número de conexões rejeitadas pelo servidor.
Atributo
Tipo
Description
Exemplos
Presença
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
As conexões são rejeitadas quando a contagem ativa no momento excede o valor configurado com MaxConcurrentConnections
.
Disponível a partir de: .NET 8.0.
Métrica: kestrel.queued_connections
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.queued_connections
UpDownCounter
{connection}
Número de conexões que estão atualmente na fila e aguardando para iniciar.
Atributo
Tipo
Description
Exemplos
Presença
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
Disponível a partir de: .NET 8.0.
Métrica: kestrel.queued_requests
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.queued_requests
UpDownCounter
{request}
Número de solicitações HTTP em conexões multiplexadas (HTTP/2 e HTTP/3) que estão atualmente na fila e aguardando para iniciar.
Atributo
Tipo
Description
Exemplos
Presença
network.protocol.name
string
Camada de aplicação OSI ou equivalente não-OSI.
http
; web_sockets
Sempre
network.protocol.version
string
Versão do protocolo especificado em network.protocol.name
.
1.1
; 2
Sempre
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
Disponível a partir de: .NET 8.0.
Métrica: kestrel.upgraded_connections
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.upgraded_connections
UpDownCounter
{connection}
Número de conexões que estão atualizadas atualmente (WebSockets).
Atributo
Tipo
Description
Exemplos
Presença
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
O contador rastreia apenas conexões HTTP/1.1.
Disponível a partir de: .NET 8.0.
Métrica: kestrel.tls_handshake.duration
Atributo
Tipo
Description
Exemplos
Presença
error.type
string
O nome completo do tipo de exceção.
System.OperationCanceledException
; Contoso.MyException
Se uma exceção foi lançada.
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
tls.protocol.version
string
Versão do protocolo TLS.
1.2
; 1.3
Se a conexão estiver protegida com TLS.
Ao usar OpenTelemetry, os buckets padrão para esta métrica são definidos como [ 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 ].
Disponível a partir de: .NET 8.0.
Métrica: kestrel.active_tls_handshakes
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
kestrel.active_tls_handshakes
UpDownCounter
{handshake}
Número de handshakes TLS que estão atualmente em andamento no servidor.
Atributo
Tipo
Description
Exemplos
Presença
network.transport
string
Camada de transporte OSI ou método de comunicação entre processos.
tcp
; unix
Sempre
network.type
string
Camada de rede OSI ou equivalente não-OSI.
ipv4
; ipv6
Se o transporte for tcp
ou udp
.
server.address
string
Nome de domínio do endereço do servidor, se disponível sem pesquisa reversa de DNS; caso contrário, endereço IP ou nome do soquete de domínio Unix.
example.com
Sempre
server.port
número inteiro
Número da porta do servidor
80
; 8080
; 443
Se o transporte for tcp
ou udp
.
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Http.Connections
As Microsoft.AspNetCore.Http.Connections
métricas relatam informações de conexão do ASP.NET Core SignalR :
Métrica: signalr.server.connection.duration
Atributo
Tipo
Description
Exemplos
Presença
signalr.connection.status
string
Status de fechamento da conexão HTTP SignalR.
app_shutdown
; timeout
Sempre
signalr.transport
string
Tipo de transporte SignalR
web_sockets
; long_polling
Sempre
Disponível a partir de: .NET 8.0.
valor
Description
normal_closure
A conexão foi fechada normalmente.
timeout
A conexão foi fechada devido a um tempo limite.
app_shutdown
A conexão foi fechada porque o aplicativo está sendo desligado.
signalr.transport
é uma das seguintes:
Como essa métrica está rastreando a duração da conexão e, idealmente, as conexões SignalR são duráveis, os buckets devem ser mais longos do que os usados para durações de solicitação. Por exemplo, usar [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] fornece um bucket superior de 5 minutos.
Disponível a partir de: .NET 8.0.
Métrica: signalr.server.active_connections
Nome
Tipo de Instrumento
Unidade (UCUM)
Description
signalr.server.active_connections
UpDownCounter
{connection}
Número de conexões que estão atualmente ativas no servidor.
Atributo
Tipo
Description
Exemplos
Presença
signalr.connection.status
string
Status de fechamento da conexão HTTP SignalR.
app_shutdown
; timeout
Sempre
signalr.transport
string
Tipo de transporte SignalR
web_sockets
; long_polling
Sempre
Disponível a partir de: .NET 8.0.