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
Nome completo del tipo di eccezione.
System.OperationCanceledException
; Contoso.MyException
Se non è 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.
Disponibile a partire da: .NET 8.0.
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.