Métricas do ASP.NET Core
Artigo 02/12/2024
8 colaboradores
Comentários
Neste artigo
Este artigo descreve as métricas internas do ASP.NET Core produzidas usando a API System.Diagnostics.Metrics . Para obter uma listagem de métricas com base na API EventCounters mais antiga, consulte aqui .
Microsoft.AspNetCore.Hosting
As métricas Microsoft.AspNetCore.Hosting
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)
Descrição
http.server.request.duration
Histograma
s
Mede a duração das solicitações HTTP de entrada.
Atributo
Tipo
Descrição
Exemplos
Presença
http.route
string
A rota correspondente.
{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
INT
Código de status de resposta HTTP .
200
Se tiver sido enviado.
network.protocol.version
string
Versão do protocolo especificado em network.protocol.name
.
3.1.1
Sempre
url.scheme
string
O componente de esquema de URI que identifica o protocolo usado.
http
; https
Sempre
aspnetcore.request.is_unhandled
Booliano
Verdadeiro quando a solicitação não foi processada pelo pipeline do aplicativo.
true
Se a solicitação não foi processada.
O tempo usado para processar uma solicitação HTTP de entrada, conforme medido na camada de hospedagem do ASP.NET Core. A medição do tempo é iniciada quando o host da Web subjacente tiver:
Analisou suficientemente os cabeçalhos de solicitação HTTP no fluxo de rede de entrada para identificar a nova solicitação.
Inicializou as estruturas de dados de contexto, como o HttpContext .
O tempo termina quando:
A execução do pipeline do manipulador ASP.NET Core for concluída.
Todos os dados de resposta forem enviados.
As estruturas de dados de contexto para a solicitação estão sendo descartadas.
Ao usar o 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)
Descrição
http.server.active_requests
UpDownCounter
{request}
Mede o número de solicitações HTTP simultâneas que estão disponibilizadas em versão piloto no momento.
Atributo
Tipo
Descrição
Exemplos
Presença
http.request.method
string
Método de solicitação HTTP. [1]
GET
; POST
; HEAD
Sempre
url.scheme
string
O componente de esquema de URI que identifica o protocolo usado.
http
; https
Sempre
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Routing
As métricas Microsoft.AspNetCore.Routing
relatam informações sobre o roteamento de solicitações HTTP para pontos de extremidade ASP.NET Core:
Métrica: aspnetcore.routing.match_attempts
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
aspnetcore.routing.match_attempts
Contador
{match_attempt}
Número de solicitações que tentaram ser correspondidas a um ponto de extremidade.
Atributo
Tipo
Descrição
Exemplos
Presença
aspnetcore.routing.match_status
string
Resultado da correspondência
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 for correspondida com sucesso.
http.route
string
A rota correspondente
{controller}/{action}/{id?}
Se uma rota for correspondida com sucesso.
Disponível a partir de: .NET 8.0.
Microsoft.AspNetCore.Diagnostics
As métricas Microsoft.AspNetCore.Diagnostics
relatam informações de diagnóstico do middleware de tratamento de erros do ASP.NET Core :
Métrica: aspnetcore.diagnostics.exceptions
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
aspnetcore.diagnostics.exceptions
Contador
{exception}
Número de exceções capturadas pelo middleware de manipulação de exceção.
Atributo
Tipo
Descrição
Exemplos
Presença
aspnetcore.diagnostics.exception.result
string
Resultado da manipulação do middleware de exceção do ASP.NET Core
handled
; unhandled
Sempre
aspnetcore.diagnostics.handler.type
string
Nome de tipo completo da implementação de IExceptionHandler
que manipulou a exceção.
Contoso.MyHandler
Se a exceção foi manipulada por esse 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 métricas Microsoft.AspNetCore.RateLimiting
relatam informações de limitação de fluxo do middleware de limitação de fluxo do ASP.NET Core :
Métrica: aspnetcore.rate_limiting.active_request_leases
Atributo
Tipo
Descrição
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
Descrição
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)
Descrição
aspnetcore.rate_limiting.queued_requests
UpDownCounter
{request}
Número de solicitações atualmente na fila aguardando para adquirir uma concessão de limitação de taxa.
Atributo
Tipo
Descrição
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
Descrição
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 de limitação de taxa mostra se a concessã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)
Descrição
aspnetcore.rate_limiting.requests
Contador
{request}
Número de solicitações que tentaram adquirir uma concessão de limitação de taxa.
Atributo
Tipo
Descrição
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 de limitação de taxa mostra se a concessão foi adquirida ou contém um motivo de rejeição.
acquired
; request_canceled
Sempre
Disponível a partir de: .NET 8.0.
As métricas Microsoft.AspNetCore.HeaderParsing
relatam informações sobre a análise de cabeçalho ASP.NET Core :
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
aspnetcore.header_parsing.parse_errors
Contador
{parse_error}
Número de erros que ocorreram ao analisar os cabeçalhos de solicitação HTTP.
Atributo
Tipo
Descrição
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 dão suporte ao cache.
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
aspnetcore.header_parsing.cache_accesses
Contador
{cache_access}
Número de vezes que um cache que armazena valores de cabeçalhos analisados foi acessado.
Atributo
Tipo
Descrição
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 métricas Microsoft.AspNetCore.Server.Kestrel
relatam informações de conexão HTTP do servidor da Web ASP.NET Core Kestrel :
Métrica: kestrel.active_connections
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
kestrel.active_connections
UpDownCounter
{connection}
Número de conexões ativas no servidor no momento.
Atributo
Tipo
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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
Descrição
Exemplos
Presença
error.type
string
Descreve um tipo de erro com o qual a conexão terminou ou o tipo de exceção sem tratamento gerado durante o pipeline de conexão. Erros de conexão conhecidos podem ser encontrados em Convenções semânticas para métricas do 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 aplicativo 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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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á acompanhando 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 os usados para durações de solicitação. Por exemplo, o uso de [ 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.
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 do servidor Web Kestrel .
Disponível a partir de: .NET 8.
Métrica: kestrel.rejected_connections
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
kestrel.rejected_connections
Contador
{connection}
Número de conexões rejeitadas pelo servidor.
Atributo
Tipo
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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)
Descrição
kestrel.queued_connections
UpDownCounter
{connection}
Número de conexões atualmente na fila e que estão aguardando para iniciar.
Atributo
Tipo
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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)
Descrição
kestrel.queued_requests
UpDownCounter
{request}
Número de solicitações HTTP em conexões multiplexadas (HTTP/2 e HTTP/3) atualmente na fila e aguardando para iniciar.
Atributo
Tipo
Descrição
Exemplos
Presença
network.protocol.name
string
Camada de aplicativo 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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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)
Descrição
kestrel.upgraded_connections
UpDownCounter
{connection}
Número de conexões atualizadas no momento (WebSockets).
Atributo
Tipo
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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 o 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: kestrel.active_tls_handshakes
Nome
Tipo de instrumento
Unidade (UCUM)
Descrição
kestrel.active_tls_handshakes
UpDownCounter
{handshake}
Número de handshakes TLS atualmente em andamento no servidor.
Atributo
Tipo
Descrição
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 de DNS reverso; caso contrário, endereço IP ou nome de soquete de domínio Unix.
example.com
Sempre
server.port
INT
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 métricas Microsoft.AspNetCore.Http.Connections
relatam informações de conexão do ASP.NET Core SignalR :
Métrica: signalr.server.connection.duration
Atributo
Tipo
Descrição
Exemplos
Presença
signalr.connection.status
string
Status de fechamento da conexão HTTP do 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
Descrição
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
é um dos seguintes:
Como essa métrica está acompanhando 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, o uso de [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
Atributo
Tipo
Descrição
Exemplos
Presença
signalr.connection.status
string
Status de fechamento da conexão HTTP do 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.