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:
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 | 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