Freigeben über


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:

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 Unknownaufgetreten 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 GeTbereitstellt, wird er GETzugeordnet.

[3] server.port: Das Vorhandensein des Werts ist versionsabhängig:

  • .NET 8: Vorhanden, wenn nicht standard (80 für http Schema, 443 für https)
  • .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