System.Net Metriken
In diesem Artikel werden die integrierten Netzwerkmetriken für System.Net beschrieben, die mithilfe der System.Diagnostics.Metrics-API erstellt wurden. Eine Auflistung von Metriken basierend auf der alternativen EventCounters--API finden Sie unter bekannten EventCounters in .NET.
Trinkgeld
Weitere Informationen zum Sammeln, Melden, Anreichern und Testen System.Net Metriken finden Sie unter Netzwerkmetriken in .NET-.
System.Net.NameResolution
Die System.Net.NameResolution
Metriken melden die DNS-Namensauflösung aus Dns:
Metrik: dns.lookup.duration
Name | Instrumenttyp | Einheit | Beschreibung |
---|---|---|---|
dns.lookup.duration |
Histogramm | s |
Misst die Zeit, die zum Ausführen eines DNS-Nachschlagevorgangs ergriffen wurde. |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
dns.question.name |
Schnur | Der Name, der abgefragt wird. |
www.example.com ; dot.net |
Immer |
error.type |
Schnur | Eine bekannte Fehlerzeichenfolge oder der vollständige Typname einer Ausnahme, die aufgetreten ist. |
host_not_found ; System.Net.Sockets.SocketException |
Wenn ein Fehler aufgetreten ist |
Diese Metrik misst die Zeit für die Durchführung von DNS-Anforderungen. Diese Anforderungen können auftreten, indem Methoden für Dns oder indirekt innerhalb von APIs auf höherer Ebene für Typen wie HttpClientaufgerufen werden.
Die meisten Fehler beim Ausführen eines DNS-Nachschlagevorgangs lösen eine SocketExceptionaus. Um die gängigen Fehlerfälle besser zu unterscheiden, erhalten Socket-Ausnahmen mit bestimmten SocketErrorCode explizite Fehlernamen in error.type
:
SocketErrorCode | error.type |
---|---|
HostNotFound | host_not_found |
TryAgain | try_again |
AddressFamilyNotSupported | address_family_not_supported |
NoRecovery | no_recovery |
Socket exceptions with any other SocketError
value are reported as System.Net.Sockets.SocketException
.
Bei Verwendung von OpenTelemetry werden die Standard-Buckets für diese Metrik auf [ 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 ] festgelegt.
Verfügbar ab: .NET 8
System.Net.Http
Die System.Net.Http
Metriken melden HTTP-Anforderungs- und Verbindungsinformationen aus 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
Metrik: http.client.open_connections
Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
---|---|---|---|
http.client.open_connections |
UpDownCounter | {connection} |
Anzahl der ausgehenden HTTP-Verbindungen, die derzeit aktiv oder im Leerlauf auf dem Client sind |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
http.connection.state |
Schnur | Status der HTTP-Verbindung im HTTP-Verbindungspool. |
active ; idle |
Immer |
network.protocol.version |
Schnur | Version des verwendeten HTTP-Protokolls. |
1.1 ; 2 |
Immer |
server.address |
Schnur | Hostbezeichner des "URI-Ursprung" HTTP-Anforderung wird gesendet. | example.com |
Immer |
server.port |
Int | Port-ID des "URI-Ursprung" HTTP-Anforderung gesendet wird. |
80 ; 8080 ; 443 |
Wenn nicht standard (80 für http Schema, 443 für https ) |
network.peer.address |
Schnur | Peer-IP-Adresse der Socketverbindung. | 10.5.3.2 |
Immer |
url.scheme |
Schnur | Das URI-Schema Komponente, die das verwendete Protokoll identifiziert. |
http ; https ; ftp |
Immer |
HttpClientverwaltet, wenn sie für die Verwendung der Standard-SocketsHttpHandlerkonfiguriert ist, einen zwischengespeicherten Pool von Netzwerkverbindungen zum Senden von HTTP-Nachrichten. Diese Metrik zählt, wie viele Verbindungen sich derzeit im Pool befinden. Aktive Verbindungen behandeln aktive Anforderungen. Aktive Verbindungen können Daten übertragen oder auf den Client oder Server warten. Leerlaufverbindungen behandeln keine Anforderungen, bleiben aber offen, sodass zukünftige Anforderungen schneller verarbeitet werden können.
Verfügbar ab: .NET 8
Metrik: http.client.connection.duration
Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
---|---|---|---|
http.client.connection.duration |
Histogramm | s |
Die Dauer der erfolgreich eingerichteten ausgehenden HTTP-Verbindungen. |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
network.protocol.version |
Schnur | Version des verwendeten HTTP-Protokolls. |
1.1 ; 2 |
Immer |
server.address |
Schnur | Hostbezeichner des "URI-Ursprung" HTTP-Anforderung wird gesendet. | example.com |
Immer |
server.port |
Int | Port-ID des "URI-Ursprung" HTTP-Anforderung gesendet wird. |
80 ; 8080 ; 443 |
Wenn nicht standard (80 für http Schema, 443 für https ) |
network.peer.address |
Schnur | IP-Adresse der Socketverbindung. | 10.5.3.2 |
Immer |
url.scheme |
Schnur | Das URI-Schema Komponente, die das verwendete Protokoll identifiziert. |
http ; https ; ftp |
Immer |
Diese Metrik wird nur erfasst, wenn HttpClient so konfiguriert ist, dass die Standard-SocketsHttpHandlerverwendet wird.
Da diese Metrik die Verbindungsdauer nachverfolgt und im Idealfall HTTP-Verbindungen für mehrere Anforderungen verwendet werden, sollten die Buckets länger sein als die buckets, die für Anforderungsdauern verwendet werden. Beispiel: Verwenden von [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] stellt einen oberen Bucket von 5 Minuten bereit.
Verfügbar ab: .NET 8
Metrik: http.client.request.duration
Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
---|---|---|---|
http.client.request.duration |
Histogramm | s |
Die Dauer ausgehender HTTP-Anforderungen. |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
error.type |
Schnur | Ursache für Anforderungsfehler: einer der HTTP-Anforderungsfehler in snake_case oder einen vollständigen Ausnahmetyp oder http 4xx/5xx-Statuscode. |
System.Threading.Tasks.TaskCanceledException ; name_resolution_error ; secure_connection_error ; 404 |
Wenn die Anforderung fehlgeschlagen ist. |
http.request.method |
Schnur | HTTP-Anforderungsmethode. |
GET ; POST ; HEAD ; _OTHER [2] |
Immer |
http.response.status_code |
Int | HTTP-Antwortstatuscode. | 200 |
Wenn die Antwort empfangen wurde. |
network.protocol.version |
Schnur | Version des verwendeten HTTP-Protokolls. |
1.1 ; 2 |
Wenn die Antwort empfangen wurde. |
server.address |
Schnur | Hostbezeichner des "URI-Ursprung" HTTP-Anforderung wird gesendet. | example.com |
Immer |
server.port |
Int | Port-ID des "URI-Ursprung" HTTP-Anforderung gesendet wird. |
80 ; 8080 ; 443 |
Hängt von .NET-Version ab. [3] |
url.scheme |
Schnur | Das URI-Schema Komponente, die das verwendete Protokoll identifiziert. |
http ; https ; ftp |
Immer |
[1] error.type
: Wenn die Anforderung fehlgeschlagen ist, wird der Wert auf eine der folgenden Werte festgelegt:
- Ein Ausnahmename mit Typ, z. B. TaskCanceledException.
- Ein Statuscode, der einen Client- oder Serverfehler angibt, z. B.
500
. - Wenn ein HttpRequestException mit einem anderen HttpRequestError als
Unknown
aufgetreten ist, ist der Enumerationswert in Schlangenfall, z. B.name_resolution_error
.
[2] http.request.method
:http.request.method
:** Der Wert enthält den Methodennamen, wenn die Methode eine der bekannten Methoden ist, die in RFC9110aufgeführt sind; andernfalls ist der Wert _OTHER
. Die vom Benutzer bereitgestellten Methodennamen werden bekannten Namen auf unberücksichtigung der Groß-/Kleinschreibung zugeordnet. Wenn der Benutzer beispielsweise den Namen GeT
bereitstellt, wird er GET
zugeordnet.
[3] server.port
: Das Vorhandensein des Werts ist versionsabhängig:
-
.NET 8: Vorhanden, wenn nicht standard (
80
fürhttp
Schema,443
fürhttps
) - .NET 9+: Immer vorhanden
Die Dauer der HTTP-Clientanforderung misst die Zeit, die der zugrunde liegende Clienthandler benötigt, um die Anforderung abzuschließen. Das Abschließen der Anforderung umfasst die Zeit bis zum Lesen von Antwortheadern aus dem Netzwerkdatenstrom. Es enthält nicht die Zeit, die das Lesen des Antworttexts verbracht hat.
Bei Verwendung von OpenTelemetry werden die Standard-Buckets für diese Metrik auf [ 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 ] festgelegt.
Verfügbar ab: .NET 8
Trinkgeld
Anreicherung ist für diese Metrik möglich.
Metrik: http.client.request.time_in_queue
Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
---|---|---|---|
http.client.request.time_in_queue |
Histogramm | s |
Die Für eine Warteschlange aufgewendete Zeit, die auf eine verfügbare Verbindung wartet. |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
http.request.method |
Schnur | HTTP-Anforderungsmethode. |
GET ; POST ; HEAD |
Immer |
network.protocol.version |
Schnur | Version des verwendeten HTTP-Protokolls. |
1.1 ; 2 |
Immer |
server.address |
Schnur | Hostbezeichner des "URI-Ursprung" HTTP-Anforderung wird gesendet. | example.com |
Immer |
server.port |
Int | Port-ID des "URI-Ursprung" HTTP-Anforderung gesendet wird. |
80 ; 8080 ; 443 |
Wenn nicht standard (80 für http Schema, 443 für https ) |
url.scheme |
Schnur | Das URI-Schema Komponente, die das verwendete Protokoll identifiziert. |
http ; https ; ftp |
Immer |
HttpClientsendet http-Anforderungen, wenn sie für die Verwendung der Standard-SocketsHttpHandlerkonfiguriert sind, über einen Pool von Netzwerkverbindungen. Wenn alle Verbindungen mit der Verarbeitung anderer Anforderungen beschäftigt sind, werden neue Anforderungen in eine Warteschlange gesetzt und warten, bis eine Netzwerkverbindung zur Verwendung verfügbar ist. Dieses Instrument misst die Zeit, in der HTTP-Anforderungen in dieser Warteschlange warten müssen, bevor alles über das Netzwerk gesendet wird.
Verfügbar ab: .NET 8
Metrik: http.client.active_requests
Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
---|---|---|---|
http.client.active_requests |
UpDownCounter | {request} |
Anzahl der aktiven HTTP-Anforderungen. |
Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
---|---|---|---|---|
http.request.method |
Schnur | HTTP-Anforderungsmethode. |
GET ; POST ; HEAD |
Immer |
server.address |
Schnur | Hostbezeichner des "URI-Ursprung" HTTP-Anforderung wird gesendet. | example.com |
Immer |
server.port |
Int | Port-ID des "URI-Ursprung" HTTP-Anforderung gesendet wird. |
80 ; 8080 ; 443 |
Wenn nicht standard (80 für http Schema, 443 für https ) |
url.scheme |
Schnur | Das URI-Schema Komponente, die das verwendete Protokoll identifiziert. |
http ; https ; ftp |
Immer |
Diese Metrik zählt, wie viele Anforderungen als aktiv betrachtet werden. Anforderungen sind für denselben Zeitraum aktiv, der durch das http.client.request.duration Instrument gemessen wird.
Verfügbar ab: .NET 8