Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |
string |
Der Name, der abgefragt wird. |
www.example.com; dot.net |
Immer |
error.type |
string |
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_connectionshttp.client.connection.durationhttp.client.request.durationhttp.client.request.time_in_queuehttp.client.active_requests
Metrik: http.client.open_connections
| Name | Instrumenttyp | Einheit (UCUM) | Beschreibung |
|---|---|---|---|
http.client.open_connections |
UpDownCounter<T> | {connection} |
Anzahl der ausgehenden HTTP-Verbindungen, die derzeit aktiv oder im Leerlauf auf dem Client sind |
| Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
|---|---|---|---|---|
http.connection.state |
string |
Status der HTTP-Verbindung im HTTP-Verbindungspool. |
active; idle |
Immer |
network.protocol.version |
string |
Version des verwendeten HTTP-Protokolls. |
1.1; 2 |
Immer |
server.address |
string |
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 |
string |
Peer-IP-Adresse der Socketverbindung. | 10.5.3.2 |
Immer |
url.scheme |
string |
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 |
string |
Version des verwendeten HTTP-Protokolls. |
1.1; 2 |
Immer |
server.address |
string |
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 |
string |
IP-Adresse der Socketverbindung. | 10.5.3.2 |
Immer |
url.scheme |
string |
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 |
Histogram<T> | s |
Die Dauer ausgehender HTTP-Anforderungen. |
| Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
|---|---|---|---|---|
error.type |
string |
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 |
string |
HTTP-Anforderungsmethode. |
GET; POST; ; HEAD_OTHER [2] |
Immer |
http.response.status_code |
int |
HTTP-Antwortstatuscode. | 200 |
Wenn die Antwort empfangen wurde. |
network.protocol.version |
string |
Version des verwendeten HTTP-Protokolls. |
1.1; 2 |
Wenn die Antwort empfangen wurde. |
server.address |
string |
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 |
string |
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 (
80fürhttpSchema,443fü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 |
Histogram<T> | s |
Die Für eine Warteschlange aufgewendete Zeit, die auf eine verfügbare Verbindung wartet. |
| Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
|---|---|---|---|---|
http.request.method |
string |
HTTP-Anforderungsmethode. |
GET; POST; HEAD |
Immer |
network.protocol.version |
string |
Version des verwendeten HTTP-Protokolls. |
1.1; 2 |
Immer |
server.address |
string |
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 |
string |
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<T> | {request} |
Anzahl der aktiven HTTP-Anforderungen. |
| Attribut | Art | Beschreibung | Beispiele | Anwesenheit |
|---|---|---|---|---|
http.request.method |
string |
HTTP-Anforderungsmethode. |
GET; POST; HEAD |
Immer |
server.address |
string |
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 |
string |
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.