Condividi tramite


metriche System.Net

Questo articolo descrive le metriche di rete predefinite per System.Net prodotte usando l'API System.Diagnostics.Metrics. Per un elenco delle metriche basate sull'API eventCounters alternativa , vedere EventCounters noto in .NET.

Mancia

Per altre informazioni su come raccogliere, creare report, arricchire e testare le metriche di System.Net, vedere metriche di rete in .NET.

System.Net.NameResolution

Le metriche System.Net.NameResolution segnalano la risoluzione dei nomi DNS da Dns:

Metrica: dns.lookup.duration
Nome Tipo di strumento Unità Descrizione
dns.lookup.duration Istogramma s Misura il tempo impiegato per eseguire una ricerca DNS.
Attributo Digitare Descrizione Esempi Presenza
dns.question.name corda Nome sottoposto a query. www.example.com; dot.net Sempre
error.type corda Stringa di errore nota o nome completo di un'eccezione che si è verificata. host_not_found; System.Net.Sockets.SocketException Se si è verificato un errore

Questa metrica misura il tempo necessario per effettuare richieste DNS. Queste richieste possono verificarsi chiamando metodi su Dns o indirettamente all'interno di API di livello superiore su tipi come HttpClient.

La maggior parte degli errori durante l'esecuzione di una ricerca DNS genera un SocketException. Per evitare disambiguare i casi di errore comuni, alle eccezioni socket con SocketErrorCode specifiche vengono assegnati nomi di errore espliciti in error.type:

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

Le eccezioni socket con qualsiasi altro valore di SocketError vengono segnalate come System.Net.Sockets.SocketException.

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

System.Net.Http

Le metriche System.Net.Http segnalano le informazioni di connessione e richiesta HTTP da System.Net.Http:

Metrica: http.client.open_connections
Nome Tipo di strumento Unità (UCUM) Descrizione
http.client.open_connections UpDownCounter {connection} Numero di connessioni HTTP in uscita attualmente attive o inattive nel client
Attributo Digitare Descrizione Esempi Presenza
http.connection.state corda Stato della connessione HTTP nel pool di connessioni HTTP. active; idle Sempre
network.protocol.version corda Versione del protocollo HTTP usata. 1.1; 2 Sempre
server.address corda Identificatore host dell'"origine URI" richiesta HTTP viene inviata. example.com Sempre
server.port Int Identificatore di porta dell'"origine URI" richiesta HTTP viene inviata. 80; 8080; 443 Se non è predefinito (80 per lo schema di http, 443 per https)
network.peer.address corda Indirizzo IP peer della connessione socket. 10.5.3.2 Sempre
url.scheme corda Lo schema URI componente che identifica il protocollo usato. http; https; ftp Sempre

HttpClient, se configurato per l'uso del SocketsHttpHandlerpredefinito , mantiene un pool memorizzato nella cache delle connessioni di rete per l'invio di messaggi HTTP. Questa metrica conta il numero di connessioni attualmente presenti nel pool. Le connessioni attive gestiscono le richieste attive. Le connessioni attive possono trasmettere dati o attendere il client o il server. Le connessioni inattive non gestiscono richieste, ma vengono lasciate aperte in modo che le richieste future possano essere gestite più rapidamente.

Disponibile a partire da: .NET 8

Metrica: http.client.connection.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
http.client.connection.duration Istogramma s Durata delle connessioni HTTP in uscita stabilite correttamente.
Attributo Digitare Descrizione Esempi Presenza
network.protocol.version corda Versione del protocollo HTTP usata. 1.1; 2 Sempre
server.address corda Identificatore host dell'"origine URI" richiesta HTTP viene inviata. example.com Sempre
server.port Int Identificatore di porta dell'"origine URI" richiesta HTTP viene inviata. 80; 8080; 443 Se non è predefinito (80 per lo schema di http, 443 per https)
network.peer.address corda Indirizzo IP della connessione socket. 10.5.3.2 Sempre
url.scheme corda Lo schema URI componente che identifica il protocollo usato. http; https; ftp Sempre

Questa metrica viene acquisita solo quando HttpClient è configurato per l'uso del SocketsHttpHandlerpredefinito.

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

Metrica: http.client.request.duration
Nome Tipo di strumento Unità (UCUM) Descrizione
http.client.request.duration Istogramma s Durata delle richieste HTTP in uscita.
Attributo Digitare Descrizione Esempi Presenza
error.type corda Motivo dell'errore della richiesta: uno degli errori di richiesta HTTP in snake_case o un tipo di eccezione completo o un codice di stato HTTP 4xx/5xx. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 Se la richiesta non è riuscita.
http.request.method corda Metodo di richiesta HTTP. GET; POST; HEAD; _OTHER [2] Sempre
http.response.status_code Int codice di stato della risposta HTTP. 200 Se la risposta è stata ricevuta.
network.protocol.version corda Versione del protocollo HTTP usata. 1.1; 2 Se la risposta è stata ricevuta.
server.address corda Identificatore host dell'"origine URI" richiesta HTTP viene inviata. example.com Sempre
server.port Int Identificatore di porta dell'"origine URI" richiesta HTTP viene inviata. 80; 8080; 443 Dipende dalla versione di .NET. [3]
url.scheme corda Lo schema URI componente che identifica il protocollo usato. http; https; ftp Sempre

[1] error.type: Se la richiesta non è riuscita, il valore viene impostato su uno dei seguenti:

  • Nome di eccezione con tipo, ad esempio, TaskCanceledException.
  • Codice di stato che indica un errore client o server, ad esempio 500.
  • Se si è verificato un HttpRequestException con un HttpRequestError diverso da Unknown, il valore di enumerazione nel caso di serpente, ad esempio, name_resolution_error.

[2] http.request.method:http.request.method:** Il valore contiene il nome del metodo, se il metodo è uno dei metodi noti elencati in RFC9110; in caso contrario, il valore è _OTHER. I nomi dei metodi forniti dall'utente verranno mappati ai nomi noti in modo senza distinzione tra maiuscole e minuscole. Ad esempio, se l'utente fornisce il nome GeT, verrà eseguito il mapping a GET.

[3] server.port: La presenza del valore dipende dalla versione:

  • .NET 8: presente se non è predefinito (80 per lo schema http, 443 per https)
  • .NET 9+: Sempre presente

La durata della richiesta client HTTP misura il tempo impiegato dal gestore client sottostante per completare la richiesta. Il completamento della richiesta include il tempo necessario per leggere le intestazioni di risposta dal flusso di rete. Non include il tempo impiegato per leggere il corpo della risposta.

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

Mancia

di arricchimento è possibile per questa metrica.

Metrica: http.client.request.time_in_queue
Nome Tipo di strumento Unità (UCUM) Descrizione
http.client.request.time_in_queue Istogramma s Quantità di tempo impiegato dalle richieste in una coda in attesa di una connessione disponibile.
Attributo Digitare Descrizione Esempi Presenza
http.request.method corda Metodo di richiesta HTTP. GET; POST; HEAD Sempre
network.protocol.version corda Versione del protocollo HTTP usata. 1.1; 2 Sempre
server.address corda Identificatore host dell'"origine URI" richiesta HTTP viene inviata. example.com Sempre
server.port Int Identificatore di porta dell'"origine URI" richiesta HTTP viene inviata. 80; 8080; 443 Se non è predefinito (80 per lo schema di http, 443 per https)
url.scheme corda Lo schema URI componente che identifica il protocollo usato. http; https; ftp Sempre

HttpClient, se configurato per l'uso del SocketsHttpHandlerpredefinito , invia richieste HTTP usando un pool di connessioni di rete. Se tutte le connessioni gestiscono altre richieste, le nuove richieste vengono inserite in una coda e attendono fino a quando non è disponibile una connessione di rete per l'uso. Questo strumento misura la quantità di tempo trascorso dalle richieste HTTP in attesa in tale coda, prima di qualsiasi invio in rete.

Disponibile a partire da: .NET 8

Metrica: http.client.active_requests
Nome Tipo di strumento Unità (UCUM) Descrizione
http.client.active_requests UpDownCounter {request} Numero di richieste HTTP attive.
Attributo Digitare Descrizione Esempi Presenza
http.request.method corda Metodo di richiesta HTTP. GET; POST; HEAD Sempre
server.address corda Identificatore host dell'"origine URI" richiesta HTTP viene inviata. example.com Sempre
server.port Int Identificatore di porta dell'"origine URI" richiesta HTTP viene inviata. 80; 8080; 443 Se non è predefinito (80 per lo schema di http, 443 per https)
url.scheme corda Lo schema URI componente che identifica il protocollo usato. http; https; ftp Sempre

Questa metrica conta il numero di richieste considerate attive. Le richieste sono attive per lo stesso periodo di tempo misurato dallo strumento http.client.request.duration.

Disponibile a partire da: .NET 8