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
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:
http.client.open_connections
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
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:
- Nazwa wyjątku z typem, na przykład TaskCanceledException.
- Kod stanu wskazujący błąd klienta lub serwera, na przykład
500
. - Jeśli wystąpił HttpRequestException z HttpRequestError innym niż
Unknown
, wartość wyliczenia w przypadku węża, na przykładname_resolution_error
.
[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 schematuhttp
443
dlahttps
) - .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
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