Compartilhar via


Métricas do ASP.NET Core

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.

Dica

Para obter mais informações sobre como coletar, relatar, enriquecer e testar as métricas do ASP.NET Core, confira Usando métricas do ASP.NET Core.

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
Nome Tipo de instrumento Unidade (UCUM) Descrição
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Número de solicitações atualmente ativas no servidor que possuem uma concessão de limite 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_lease.duration
Nome Tipo de instrumento Unidade (UCUM) Descrição
aspnetcore.rate_limiting.request_lease.duration Histograma s A duração da concessão de limitação de taxa mantida por solicitações no servidor.
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
Nome Tipo de instrumento Unidade (UCUM) Descrição
aspnetcore.rate_limiting.request.time_in_queue Histograma s O tempo que uma solicitação passou em uma 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.
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.

Microsoft.AspNetCore.HeaderParsing

As métricas Microsoft.AspNetCore.HeaderParsing relatam informações sobre a análise de cabeçalho ASP.NET Core:

Métrica: aspnetcore.header_parsing.parse_errors
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.

Métrica: aspnetcore.header_parsing.cache_accesses

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
Nome Tipo de instrumento Unidade (UCUM) Descrição
kestrel.connection.duration Histograma s A duração das conexões no servidor.
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
Nome Tipo de instrumento Unidade (UCUM) Descrição
kestrel.tls_handshake.duration Histograma s A duração dos handshakes TLS no servidor.
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
Nome Tipo de instrumento Unidade (UCUM) Descrição
signalr.server.connection.duration Histograma s A duração das conexões no servidor.
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:

Valor Protocolo
server_sent_events eventos enviados pelo servidor
long_polling Sondagem Longa
web_sockets WebSocket

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
Nome Tipo de instrumento Unidade (UCUM) Descrição
signalr.server.active_connections UpDownCounter {connection} Número de conexões ativas no servidor no momento.
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.