Udostępnij za pośrednictwem


Metryki System.Net

W tym artykule opisano metryki sieci wbudowane dla System.Net utworzone przy użyciu interfejsu API System.Diagnostics.Metrics. Aby uzyskać listę metryk opartych na alternatywnym interfejsie API EventCounters, zobacz Dobrze znane elementy EventCounters na platformie .NET.

Napiwek

Aby uzyskać więcej informacji na temat zbierania, raportowania, wzbogacania i testowania metryk System.Net, zobacz Metryki sieci na platformie .NET.

System.Net.NameResolution

Metryki System.Net.NameResolution zgłaszają rozpoznawanie nazw DNS z Dns:

Metryka: dns.lookup.duration
Nazwa Typ instrumentu Jednostka Opis
dns.lookup.duration Histogram s Mierzy czas potrzebny na wykonanie wyszukiwania DNS.
Atrybut Typ Opis Przykłady Obecność
dns.question.name struna Nazwa, do którego jest wykonywane zapytanie. www.example.com; dot.net Zawsze
error.type struna Dobrze znany ciąg błędu lub pełna nazwa typu wyjątku, który wystąpił. host_not_found; System.Net.Sockets.SocketException Jeśli wystąpił błąd

Ta metryka mierzy czas podejmowania żądań DNS. Te żądania mogą wystąpić, wywołując metody Dns lub pośrednio w interfejsach API wyższego poziomu w typach, takich jak HttpClient.

Większość błędów podczas wyszukiwania DNS zgłasza SocketException. Aby lepiej uściślić typowe przypadki błędów, wyjątki gniazd z określonymi SocketErrorCode mają jawne nazwy błędów w error.type:

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

Wyjątki gniazd z dowolną inną wartością SocketError są zgłaszane jako System.Net.Sockets.SocketException.

W przypadku korzystania z biblioteki OpenTelemetry domyślne zasobniki dla tej metryki są ustawione na [ 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 ].

Dostępne od: .NET 8

System.Net.Http

Metryki System.Net.Http raportują informacje o żądaniu HTTP i połączeniu z System.Net.Http:

Metryka: http.client.open_connections
Nazwa Typ instrumentu Jednostka (UCUM) Opis
http.client.open_connections UpDownCounter {connection} Liczba wychodzących połączeń HTTP, które są obecnie aktywne lub bezczynne na kliencie
Atrybut Typ Opis Przykłady Obecność
http.connection.state struna Stan połączenia HTTP w puli połączeń HTTP. active; idle Zawsze
network.protocol.version struna Używana wersja protokołu HTTP. 1.1; 2 Zawsze
server.address struna Identyfikator hosta "źródło identyfikatora URI" żądanie HTTP jest wysyłane do. example.com Zawsze
server.port Int Identyfikator portu "źródło identyfikatora URI" wysyłane jest żądanie HTTP. 80; 8080; 443 Jeśli nie jest to ustawienie domyślne (80 dla schematu http, 443 dla https)
network.peer.address struna Równorzędny adres IP połączenia gniazda. 10.5.3.2 Zawsze
url.scheme struna Schemat identyfikatora URI składnik identyfikujący używany protokół. http; https; ftp Zawsze

HttpClient, jeśli skonfigurowano do używania domyślnego SocketsHttpHandler, utrzymuje buforowana pulę połączeń sieciowych na potrzeby wysyłania komunikatów HTTP. Ta metryka zlicza liczbę połączeń aktualnie w puli. Aktywne połączenia obsługują aktywne żądania. Aktywne połączenia mogą przesyłać dane lub czekać na klienta lub serwer. Bezczynne połączenia nie obsługują żadnych żądań, ale pozostają otwarte, aby przyszłe żądania mogły być obsługiwane szybciej.

Dostępne od: .NET 8

Metryka: http.client.connection.duration
Nazwa Typ instrumentu Jednostka (UCUM) Opis
http.client.connection.duration Histogram s Czas trwania pomyślnie ustanowionych wychodzących połączeń HTTP.
Atrybut Typ Opis Przykłady Obecność
network.protocol.version struna Używana wersja protokołu HTTP. 1.1; 2 Zawsze
server.address struna Identyfikator hosta "źródło identyfikatora URI" żądanie HTTP jest wysyłane do. example.com Zawsze
server.port Int Identyfikator portu "źródło identyfikatora URI" wysyłane jest żądanie HTTP. 80; 8080; 443 Jeśli nie jest to ustawienie domyślne (80 dla schematu http, 443 dla https)
network.peer.address struna Adres IP połączenia gniazda. 10.5.3.2 Zawsze
url.scheme struna Schemat identyfikatora URI składnik identyfikujący używany protokół. http; https; ftp Zawsze

Ta metryka jest przechwytywana tylko wtedy, gdy HttpClient jest skonfigurowana do używania domyślnego SocketsHttpHandler.

Ponieważ ta metryka śledzi czas trwania połączenia, a w idealnym przypadku połączenia HTTP są używane dla wielu żądań, zasobniki powinny być dłuższe niż te używane przez czas trwania żądań. Na przykład użycie wartości [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] zapewnia górny przedział 5 minut.

Dostępne od: .NET 8

Metryka: http.client.request.duration
Nazwa Typ instrumentu Jednostka (UCUM) Opis
http.client.request.duration Histogram s Czas trwania wychodzących żądań HTTP.
Atrybut Typ Opis Przykłady Obecność
error.type struna Przyczyna niepowodzenia żądania: jeden z błędów żądania HTTP w snake_case lub pełnego typu wyjątku albo kod stanu HTTP 4xx/5xx. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 Jeśli żądanie nie powiodło się.
http.request.method struna Metoda żądania HTTP. GET; POST; HEAD; _OTHER [2] Zawsze
http.response.status_code Int kod stanu odpowiedzi HTTP. 200 Jeśli otrzymano odpowiedź.
network.protocol.version struna Używana wersja protokołu HTTP. 1.1; 2 Jeśli otrzymano odpowiedź.
server.address struna Identyfikator hosta "źródło identyfikatora URI" żądanie HTTP jest wysyłane do. example.com Zawsze
server.port Int Identyfikator portu "źródło identyfikatora URI" wysyłane jest żądanie HTTP. 80; 8080; 443 Zależy od wersji platformy .NET. [3]
url.scheme struna Schemat identyfikatora URI składnik identyfikujący używany protokół. http; https; ftp Zawsze

[1] error.type: Jeśli żądanie nie powiodło się, wartość jest ustawiona na jedną z następujących wartości:

[2] http.request.method:http.request.method:** Wartość zawiera nazwę metody, jeśli metoda jest jedną z dobrze znanych metod wymienionych w RFC9110; w przeciwnym razie wartość to _OTHER. Nazwy metod dostarczonych przez użytkownika zostaną zamapowane na znane nazwy w sposób niewrażliwy na wielkość liter. Jeśli na przykład użytkownik podaje nazwę GeT, zostanie on zamapowany na GET.

[3] server.port: Obecność wartości jest zależna od wersji:

  • .NET 8:80 dla schematu http443 dla https)
  • .NET 9+: zawsze obecne

Czas trwania żądania klienta HTTP mierzy czas trwania bazowego programu obsługi klienta w celu ukończenia żądania. Ukończenie żądania obejmuje czas odczytywania nagłówków odpowiedzi ze strumienia sieciowego. Nie obejmuje to czasu spędzonego na odczytywaniu treści odpowiedzi.

W przypadku korzystania z biblioteki OpenTelemetry domyślne zasobniki dla tej metryki są ustawione na [ 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 ].

Dostępne od: .NET 8

Napiwek

wzbogacania jest możliwe dla tej metryki.

Metryka: http.client.request.time_in_queue
Nazwa Typ instrumentu Jednostka (UCUM) Opis
http.client.request.time_in_queue Histogram s Ilość czasu poświęcanego na kolejkę oczekującą na dostępne połączenie.
Atrybut Typ Opis Przykłady Obecność
http.request.method struna Metoda żądania HTTP. GET; POST; HEAD Zawsze
network.protocol.version struna Używana wersja protokołu HTTP. 1.1; 2 Zawsze
server.address struna Identyfikator hosta "źródło identyfikatora URI" żądanie HTTP jest wysyłane do. example.com Zawsze
server.port Int Identyfikator portu "źródło identyfikatora URI" wysyłane jest żądanie HTTP. 80; 8080; 443 Jeśli nie jest to ustawienie domyślne (80 dla schematu http, 443 dla https)
url.scheme struna Schemat identyfikatora URI składnik identyfikujący używany protokół. http; https; ftp Zawsze

HttpClient, jeśli skonfigurowano do używania domyślnego SocketsHttpHandler, wysyła żądania HTTP przy użyciu puli połączeń sieciowych. Jeśli wszystkie połączenia są zajęte obsługą innych żądań, nowe żądania są umieszczane w kolejce i czekają, aż połączenie sieciowe będzie dostępne do użycia. Ten instrument mierzy ilość czasu, przez jaki żądania HTTP oczekują w tej kolejce przed wysłaniem wszystkich elementów w sieci.

Dostępne od: .NET 8

Metryka: http.client.active_requests
Nazwa Typ instrumentu Jednostka (UCUM) Opis
http.client.active_requests UpDownCounter {request} Liczba aktywnych żądań HTTP.
Atrybut Typ Opis Przykłady Obecność
http.request.method struna Metoda żądania HTTP. GET; POST; HEAD Zawsze
server.address struna Identyfikator hosta "źródło identyfikatora URI" żądanie HTTP jest wysyłane do. example.com Zawsze
server.port Int Identyfikator portu "źródło identyfikatora URI" wysyłane jest żądanie HTTP. 80; 8080; 443 Jeśli nie jest to ustawienie domyślne (80 dla schematu http, 443 dla https)
url.scheme struna Schemat identyfikatora URI składnik identyfikujący używany protokół. http; https; ftp Zawsze

Ta metryka zlicza liczbę żądań, które są uznawane za aktywne. Żądania są aktywne przez ten sam okres, który jest mierzony przez instrument http.client.request. duration.

Dostępne od: .NET 8