Freigeben über


System.Net-Metriken

Dieser Artikel beschreibt die integrierten Netzwerkmetriken für System.Net, die mit der System.Diagnostics.Metrics-API erstellt wurden. Eine Auflistung von Metriken basierend auf der alternativen EventCounters-API finden Sie unter Bekannte EventCounters in .NET.

Tipp

Weitere Informationen zum Sammeln, Melden, Anreichern und Testen von System.Net-Metriken finden Sie unter Netzwerkmetriken in .NET.

System.Net.NameResolution

Der System.Net.NameResolution-Metrikbericht DNS-Namensauflösung von Dns:

Metrik: dns.lookup.duration
Name Instrument Typ Einheit Beschreibung
dns.lookup.duration Histogramm s Misst die Zeit, die benötigt wird, um ein DNS-Lookup durchzuführen.
attribute type Beschreibung Beispiele Anwesenheit
dns.question.name Zeichenfolge Der Name wird abgefragt. www.example.com; dot.net Always
error.type Zeichenfolge 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, die für DNS-Anforderungen benötigt wird. Diese Anforderungen können durch den Aufruf von Methoden auf Dns oder indirekt über APIs auf höherer Ebene auf Typen wie HttpClient erfolgen.

Die meisten Fehler eines DNS-Lookups führen zu einem SocketException. Um die häufigen Fehlerfälle besser zu unterscheiden, werden Socket-Ausnahmen mit dem spezifischen SocketErrorCode in error.type explizit mit Fehlernamen versehen:

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

Alle anderen SocketError-Werte von SocketExceptions werden als System.Net.Sockets.SocketException gemeldet.

Bei Verwendung von OpenTelemetry werden die Standardbuckets 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.

Ab .NET 8 verfügbar

System.Net.Http

Die System.Net.Http-Metriken melden HTTP-Anforderungs- und Verbindungsinformationen von System.Net.Http:

Metrik: http.client.open_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
http.client.open_connections UpDownCounter {connection} Anzahl der ausgehenden HTTP-Verbindungen, die derzeit auf dem Client aktiv oder im Leerlauf sind
attribute type Beschreibung Beispiele Anwesenheit
http.connection.state Zeichenfolge Status der HTTP-Verbindung im HTTP-Verbindungspool. active; idle Always
network.protocol.version Zeichenfolge Version des verwendeten Anwendungsschichtprotokolls. 1.1; 2 Always
server.address Zeichenfolge Host-ID des „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. example.com Always
server.port INT Port-ID der „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. 80; 8080; 443 Wenn nicht Standard (80 für das Schema http, 443 für https)
network.peer.address Zeichenfolge Peer-IP-Adresse der Socketverbindung. 10.5.3.2 Always
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https; ftp Always

Wenn HttpClient so konfiguriert ist, dass es den Standardwert SocketsHttpHandler verwendet, unterhält es einen Cache-Pool von Netzwerkverbindungen zum Senden von HTTP-Nachrichten. Diese Metrik zählt, wie viele Verbindungen sich derzeit im Pool befinden. Aktive Verbindungen verarbeiten aktive Anforderungen. Aktive Verbindungen können Daten übertragen oder auf den Client oder Server warten. Inaktive Verbindungen bearbeiten keine Anforderungen, werden aber freigehalten, damit zukünftige Anforderungen schneller bearbeitet werden können.

Ab .NET 8 verfügbar

Metrik: http.client.connection.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
http.client.connection.duration Histogramm s Die Dauer der erfolgreich aufgebauten ausgehenden HTTP-Verbindungen.
attribute type Beschreibung Beispiele Anwesenheit
network.protocol.version Zeichenfolge Version des verwendeten Anwendungsschichtprotokolls. 1.1; 2 Always
server.address Zeichenfolge Host-ID des „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. example.com Always
server.port INT Port-ID der „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. 80; 8080; 443 Wenn nicht Standard (80 für das Schema http, 443 für https)
network.peer.address Zeichenfolge IP-Adresse der Socketverbindung. 10.5.3.2 Always
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https; ftp Always

Diese Metrik wird nur erfasst, wenn HttpClient so konfiguriert ist, dass es den Standardwert SocketsHttpHandler verwendet.

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 für die Anforderungsdauer verwendeten Buckets. Mithilfe von „[ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ]“ wird beispielsweise ein oberer Bucket von 5 Minuten angegeben.

Ab .NET 8 verfügbar

Metrik: http.client.request.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
http.client.request.duration Histogramm s Die Dauer ausgehender HTTP-Anforderungen.
attribute type Beschreibung Beispiele Anwesenheit
error.type Zeichenfolge Ursache für Anforderungsfehler: einer der HTTP-Anforderungsfehler oder ein vollständiger Ausnahmetyp oder ein HTTP 4xx/5xx-Statuscode. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 Wenn die Anforderung fehlgeschlagen ist.
http.request.method Zeichenfolge HTTP-Anforderungsmethode. GET; POST; HEAD Always
http.response.status_code INT HTTP-Antwortstatuscode. 200 Wenn eine empfangen wurde.
network.protocol.version Zeichenfolge Version des verwendeten Anwendungsschichtprotokolls. 1.1; 2 Falls eine HTTP-Antwort empfangen wurde.
server.address Zeichenfolge Host-ID des „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. example.com Always
server.port INT Port-ID der „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. 80; 8080; 443 Wenn nicht Standard (80 für das Schema http, 443 für https)
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https; ftp Always

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 Standardbuckets 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.

Ab .NET 8 verfügbar

Tipp

Anreicherung ist für diese Metrik möglich.

Metrik: http.client.request.time_in_queue
Name Instrument Typ Einheit (UCUM) Beschreibung
http.client.request.time_in_queue Histogramm s Die Zeitdauer, die Anforderungen in einer Warteschlange auf eine verfügbare Verbindung warten.
attribute type Beschreibung Beispiele Anwesenheit
http.request.method Zeichenfolge HTTP-Anforderungsmethode. GET; POST; HEAD Always
network.protocol.version Zeichenfolge Version des verwendeten Anwendungsschichtprotokolls. 1.1; 2 Always
server.address Zeichenfolge Host-ID des „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. example.com Always
server.port INT Port-ID der „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. 80; 8080; 443 Wenn nicht Standard (80 für das Schema http, 443 für https)
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https; ftp Always

Wenn HttpClient so konfiguriert ist, dass es die Standardeinstellung SocketsHttpHandler verwendet, sendet es HTTP-Anforderungen über einen Pool von Netzwerkverbindungen. Wenn alle Verbindungen mit der Bearbeitung anderer Anforderungen beschäftigt sind, werden neue Anforderungen in eine Warteschlange verschoben, wo sie warten, bis eine Netzwerkverbindung verfügbar ist. Dieses Messgerät misst die Zeit, die HTTP-Anforderungen in dieser Warteschlange warten, bevor etwas über das Netzwerk gesendet wird.

Ab .NET 8 verfügbar

Metrik: http.client.active_requests
Name Instrument Typ Einheit (UCUM) Beschreibung
http.client.active_requests UpDownCounter {request} Anzahl der aktiven HTTP-Anforderungen.
attribute type Beschreibung Beispiele Anwesenheit
http.request.method Zeichenfolge HTTP-Anforderungsmethode. GET; POST; HEAD Always
server.address Zeichenfolge Host-ID des „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. example.com Always
server.port INT Port-ID der „URI-Ursprungs“, an den die HTTP-Anforderung gesendet wird. 80; 8080; 443 Wenn nicht Standard (80 für das Schema http, 443 für https)
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https; ftp Always

Diese Metrik zählt, wie viele Anforderungen als aktiv eingestuft werden. Die Anforderungen sind für die gleiche Zeitspanne aktiv, die durch das Messgerät http.client.request.duration gemessen wird.

Ab .NET 8 verfügbar