Metriche di ASP.NET Core
Articolo 03/21/2024
8 contributori
Commenti e suggerimenti
In questo articolo
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
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
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
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.
Le metriche Microsoft.AspNetCore.HeaderParsing
segnalano informazioni sull'analisi dell'intestazione core ASP.NET :
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.
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
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
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
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:
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
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.