Condividi tramite


Metriche di ASP.NET Core

Questo articolo descrive le metriche predefinite per ASP.NET Core prodotte con l'API System.Diagnostics.Metrics. Per un elenco delle metriche basate sull'API EventCounters precedente, vedere qui.

Suggerimento

Per altre informazioni su come raccogliere, creare report, arricchire e testare le metriche di base ASP.NET, vedere Uso di metriche di base ASP.NET.

Microsoft.AspNetCore.Hosting

Le metriche Microsoft.AspNetCore.Hosting segnalano informazioni generali sulle richieste HTTP ricevute da ASP.NET Core:

Metrica: http.server.request.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
http.server.request.duration Istogramma s Misura la durata delle richieste HTTP in ingresso.
Attributo Tipo Descrizione Esempi Presenza
http.route string Route corrispondente. {controller}/{action}/{id?} Se disponibile.
error.type string Descrive una classe di errore con cui l'operazione è terminata. timeout; name_resolution_error; 500 Se la richiesta è terminata con un errore.
http.request.method string Metodo della richiesta HTTP. GET; POST; HEAD Sempre
http.response.status_code int Codice di stato della risposta HTTP. 200 Se ne è stato inviato uno.
network.protocol.version string Versione del protocollo specificato in network.protocol.name. 3.1.1 Sempre
url.scheme string Componente dello schema URI che identifica il protocollo usato. http; https Sempre
aspnetcore.request.is_unhandled Booleano True quando la richiesta non è stata gestita dalla pipeline dell'applicazione. true Se la richiesta non è stata gestita.

Tempo usato per gestire una richiesta HTTP in ingresso misurata al livello di hosting di ASP.NET Core. La misurazione dell'ora inizia dopo che l'host Web sottostante ha:

  • Sufficientemente analizzate le intestazioni della richiesta HTTP nel flusso di rete in ingresso per identificare la nuova richiesta.
  • Inizializzate le strutture dei dati di contesto, ad esempio HttpContext.

L'ora termina quando:

  • L'esecuzione della pipeline del gestore ASP.NET Core è stata completata.
  • Tutti i dati di risposta sono stati inviati.
  • Le strutture di dati di contesto per la richiesta vengono eliminate.

Quando si usa OpenTelemetry, i bucket predefiniti per questa metrica sono impostati su [ 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 ].

Disponibile a partire da: .NET 8.0.

Metrica: http.server.active_requests
Nome Tipo di strumento Unità (UCUM) Descrizione
http.server.active_requests UpDownCounter {request} Misura il numero di richieste HTTP simultanee attualmente in corso.
Attributo Tipo Descrizione Esempi Presenza
http.request.method string Metodo della richiesta HTTP. [1] GET; POST; HEAD Sempre
url.scheme string Componente dello schema URI che identifica il protocollo usato. http; https Sempre

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.Routing

Le metriche Microsoft.AspNetCore.Routing segnalano informazioni sul routing delle richieste HTTP agli endpoint ASP.NET Core:

Metrica: aspnetcore.routing.match_attempts
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.routing.match_attempts Contatore {match_attempt} Numero di richieste che si è tentato di abbinare a un endpoint.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.routing.match_status string Risultato della corrispondenza success; failure Sempre
aspnetcore.routing.is_fallback_route boolean Valore che indica se la route corrispondente è una route di fallback. True Se una route è stata trovata correttamente.
http.route string Route corrispondente {controller}/{action}/{id?} Se una route è stata trovata correttamente.

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.Diagnostics

Le metriche Microsoft.AspNetCore.Diagnostics segnalano le informazioni di diagnostica del middleware di gestione degli errori di base ASP.NET:

Metrica: aspnetcore.diagnostics.exceptions
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.diagnostics.exceptions Contatore {exception} Numero di eccezioni rilevate dal middleware di gestione delle eccezioni.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.diagnostics.exception.result string Risultato della gestione del middleware delle eccezioni di ASP.NET Core handled; unhandled Sempre
aspnetcore.diagnostics.handler.type string Nome completo del tipo dell'implementazione IExceptionHandler che ha gestito l'eccezione. Contoso.MyHandler Se l'eccezione è stata gestita da questo gestore.
exception.type string Nome completo del tipo di eccezione. System.OperationCanceledException; Contoso.MyException Sempre

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.RateLimiting

Le metriche Microsoft.AspNetCore.RateLimiting segnalano le informazioni sulla limitazione della frequenza da middleware di limitazione della frequenza ASP.NET Core:

Metrica: aspnetcore.rate_limiting.active_request_leases
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Numero di richieste attualmente attive nel server che contengono un lease di limitazione della frequenza.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.rate_limiting.policy string Nome dei criteri di limitazione della frequenza. fixed; sliding; token Se l'endpoint corrispondente per la richiesta ha un criterio di limitazione della frequenza.

Disponibile a partire da: .NET 8.0.

Metrica: aspnetcore.rate_limiting.request_lease.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.rate_limiting.request_lease.duration Istogramma s Durata del lease di limitazione della frequenza detenuto dalle richieste nel server.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.rate_limiting.policy string Nome dei criteri di limitazione della frequenza. fixed; sliding; token Se l'endpoint corrispondente per la richiesta ha un criterio di limitazione della frequenza.

Disponibile a partire da: .NET 8.0.

Metrica: aspnetcore.rate_limiting.queued_requests
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Numero di richieste attualmente in coda in attesa di acquisire un lease di limitazione della frequenza.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.rate_limiting.policy string Nome dei criteri di limitazione della frequenza. fixed; sliding; token Se l'endpoint corrispondente per la richiesta ha un criterio di limitazione della frequenza.

Disponibile a partire da: .NET 8.0.

Metrica: aspnetcore.rate_limiting.request.time_in_queue
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.rate_limiting.request.time_in_queue Istogramma s Tempo impiegato da una richiesta in una coda in attesa di acquisire un lease di limitazione della frequenza.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.rate_limiting.policy string Nome dei criteri di limitazione della frequenza. fixed; sliding; token Se l'endpoint corrispondente per la richiesta ha un criterio di limitazione della frequenza.
aspnetcore.rate_limiting.result string Il risultato della limitazione della frequenza indica se il lease è stato acquisito o contiene un motivo di rifiuto. acquired; request_canceled Sempre

Disponibile a partire da: .NET 8.0.

Metrica: aspnetcore.rate_limiting.requests
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.rate_limiting.requests Contatore {request} Numero di richieste che hanno tentato di acquisire un lease di limitazione della frequenza.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.rate_limiting.policy string Nome dei criteri di limitazione della frequenza. fixed; sliding; token Se l'endpoint corrispondente per la richiesta ha un criterio di limitazione della frequenza.
aspnetcore.rate_limiting.result string Il risultato della limitazione della frequenza indica se il lease è stato acquisito o contiene un motivo di rifiuto. acquired; request_canceled Sempre

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.HeaderParsing

Le metriche Microsoft.AspNetCore.HeaderParsing segnalano informazioni sull'analisi dell'intestazione core ASP.NET:

Metrica: aspnetcore.header_parsing.parse_errors
Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.header_parsing.parse_errors Contatore {parse_error} Numero di errori che si sono verificati durante l'analisi delle intestazioni di richiesta HTTP.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.header_parsing.header.name string Nome dell'intestazione. Content-Type Sempre
error.type string Messaggio di errore. Unable to parse media type value. Sempre

Disponibile a partire da: .NET 8.0.

Metrica: aspnetcore.header_parsing.cache_accesses

La metrica viene generata solo per i parser di intestazione della richiesta HTTP che supportano la memorizzazione nella cache.

Nome Tipo di strumento Unità (UCUM) Descrizione
aspnetcore.header_parsing.cache_accesses Contatore {cache_access} Numero di volte in cui è stato eseguito l'accesso a una cache che archivia i valori delle intestazioni analizzate.
Attributo Tipo Descrizione Esempi Presenza
aspnetcore.header_parsing.header.name string Nome dell'intestazione. Content-Type Sempre
aspnetcore.header_parsing.cache_access.type string Valore che indica se il valore dell'intestazione è stato trovato nella cache o meno. Hit; Miss Sempre

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.Server.Kestrel

Le metriche Microsoft.AspNetCore.Server.Kestrel segnalano le informazioni di connessione HTTP da ASP.NET server Web Core Kestrel:

Metrica: kestrel.active_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.active_connections UpDownCounter {connection} Numero di connessioni attualmente attive nel server.
Attributo Tipo Descrizione Esempi Presenza
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.connection.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.connection.duration Istogramma s Durata delle connessioni nel server.
Attributo Tipo Descrizione Esempi Presenza
error.type string Descrive un tipo di errore con cui la connessione è terminata o il tipo di eccezione non gestito generato durante la pipeline di connessione. Gli errori di connessione noti sono disponibili in Semantic Conventions for Kestrel web server metrics (Convenzioni semantiche per le metriche del server Web Kestrel). connection_reset; invalid_request_headers; System.OperationCanceledException Se la connessione è terminata con un errore noto o è stata generata un'eccezione.
network.protocol.name string Livello applicazione OSI o equivalente non OSI. http; web_sockets Sempre
network.protocol.version string Versione del protocollo specificato in network.protocol.name. 1.1; 2 Sempre
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.
tls.protocol.version string Versione del protocollo TLS. 1.2; 1.3 Se la connessione è protetta con TLS.

Poiché questa metrica monitora la durata della connessione e idealmente vengono usate connessioni HTTP per più richieste, i bucket devono essere più lunghi di quelli usati per le durate delle richieste. Ad esempio, usando [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] fornisce un bucket superiore di 5 minuti.

A partire da .NET 9, quando una connessione termina con un errore noto, il valore dell'attributo error.type viene impostato sul tipo di errore noto. Gli errori di connessione noti sono disponibili in Semantic Conventions for Kestrel web server metrics (Convenzioni semantiche per le metriche del server Web Kestrel).

Disponibile a partire da: .NET 8.

Metrica: kestrel.rejected_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.rejected_connections Contatore {connection} Numero di connessioni rifiutate dal server.
Attributo Tipo Descrizione Esempi Presenza
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Le connessioni vengono rifiutate quando il conteggio attualmente attivo supera il valore configurato con MaxConcurrentConnections.

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.queued_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.queued_connections UpDownCounter {connection} Numero di connessioni attualmente in coda e in attesa di avvio.
Attributo Tipo Descrizione Esempi Presenza
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.queued_requests
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.queued_requests UpDownCounter {request} Numero di richieste HTTP su connessioni multiplexed (HTTP/2 e HTTP/3) attualmente in coda e in attesa di avvio.
Attributo Tipo Descrizione Esempi Presenza
network.protocol.name string Livello applicazione OSI o equivalente non OSI. http; web_sockets Sempre
network.protocol.version string Versione del protocollo specificato in network.protocol.name. 1.1; 2 Sempre
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.upgraded_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.upgraded_connections UpDownCounter {connection} Numero di connessioni attualmente aggiornate (WebSocket).
Attributo Tipo Descrizione Esempi Presenza
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Il contatore tiene traccia solo delle connessioni HTTP/1.1.

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.tls_handshake.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.tls_handshake.duration Istogramma s Durata degli handshake TLS nel server.
Attributo Tipo Descrizione Esempi Presenza
error.type string Nome completo del tipo di eccezione. System.OperationCanceledException; Contoso.MyException Se non è stata generata un'eccezione.
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.
tls.protocol.version string Versione del protocollo TLS. 1.2; 1.3 Se la connessione è protetta con TLS.

Quando si usa OpenTelemetry, i bucket predefiniti per questa metrica sono impostati su [ 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 ].

Disponibile a partire da: .NET 8.0.

Metrica: kestrel.active_tls_handshakes
Nome Tipo di strumento Unità (UCUM) Descrizione
kestrel.active_tls_handshakes UpDownCounter {handshake} Numero di handshake TLS attualmente in corso nel server.
Attributo Tipo Descrizione Esempi Presenza
network.transport string Livello di trasporto OSI o metodo di comunicazione tra processi. tcp; unix Sempre
network.type string Livello di rete OSI o non OSI equivalente. ipv4; ipv6 Se il trasporto è tcp o udp.
server.address string Nome di dominio dell'indirizzo del server, se disponibile senza ricerca DNS inversa; in caso contrario, indirizzo IP o nome socket di dominio Unix. example.com Sempre
server.port int Numero Porta server 80; 8080; 443 Se il trasporto è tcp o udp.

Disponibile a partire da: .NET 8.0.

Microsoft.AspNetCore.Http.Connections

Le metriche Microsoft.AspNetCore.Http.Connections segnalano le informazioni di connessione da ASP.NET Core SignalR:

Metrica: signalr.server.connection.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
signalr.server.connection.duration Istogramma s Durata delle connessioni nel server.
Attributo Tipo Descrizione Esempi Presenza
signalr.connection.status string Stato di chiusura della connessione HTTP signalR. app_shutdown; timeout Sempre
signalr.transport string Tipo di trasporto SignalR web_sockets; long_polling Sempre

Disponibile a partire da: .NET 8.0.

Valore Descrizione
normal_closure La connessione è stata chiusa normalmente.
timeout La connessione è stata chiusa a causa di un timeout.
app_shutdown La connessione è stata chiusa perché l'app viene arrestata.

signalr.transport corrisponde a uno dei valori seguenti:

Valore Protocollo
server_sent_events eventi inviati dal server
long_polling Polling lungo
web_sockets WebSocket

Poiché questa metrica monitora la durata della connessione e idealmente le connessioni SignalR sono durevoli, i bucket devono essere più lunghi di quelli usati per le durate delle richieste. Ad esempio, usando [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] fornisce un bucket superiore di 5 minuti.

Disponibile a partire da: .NET 8.0.

Metrica: signalr.server.active_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
signalr.server.active_connections UpDownCounter {connection} Numero di connessioni attualmente attive nel server.
Attributo Tipo Descrizione Esempi Presenza
signalr.connection.status string Stato di chiusura della connessione HTTP signalR. app_shutdown; timeout Sempre
signalr.transport string Tipo di trasporto SignalR web_sockets; long_polling Sempre

Disponibile a partire da: .NET 8.0.