Partager via


Métriques System.Net

Cet article décrit les métriques de mise en réseau intégrées pour System.Net produites à l’aide de l’API System.Diagnostics.Metrics. Pour obtenir la liste des métriques basées sur les autres l’API EventCounters, consultez EventCounters connus dans .NET.

Pourboire

Pour plus d’informations sur la collecte, le rapport, l’enrichissement et le test des métriques System.Net, consultez Métriques de mise en réseau dans .NET.

System.Net.NameResolution

Les métriques System.Net.NameResolution signalent la résolution de noms DNS à partir de Dns:

Métrique : dns.lookup.duration
Nom Type d’instrument Unité Description
dns.lookup.duration Histogramme s Mesure le temps nécessaire pour effectuer une recherche DNS.
Attribut Type Description Exemples Présence
dns.question.name corde Nom interrogé. www.example.com; dot.net Toujours
error.type corde Chaîne d’erreur connue ou nom de type complet d’une exception qui s’est produite. host_not_found; System.Net.Sockets.SocketException Si une erreur s’est produite

Cette métrique mesure le temps nécessaire pour effectuer des requêtes DNS. Ces requêtes peuvent se produire en appelant des méthodes sur Dns ou indirectement dans des API de niveau supérieur sur des types tels que HttpClient.

La plupart des erreurs lors d’une recherche DNS lèvent une SocketException. Pour mieux lever l’ambiguïté des cas d’erreur courants, les exceptions de socket avec des SocketErrorCode spécifiques reçoivent des noms d’erreur explicites dans error.type:

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

Les exceptions de socket avec toute autre valeur de SocketError sont signalées comme System.Net.Sockets.SocketException.

Lorsque vous utilisez OpenTelemetry, les compartiments par défaut de cette métrique sont définis sur [ 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 ].

Disponible à partir de : .NET 8

System.Net.Http

Les métriques System.Net.Http signalent les informations de requête HTTP et de connexion à partir de System.Net.Http:

Métrique : http.client.open_connections
Nom Type d’instrument Unité (UCUM) Description
http.client.open_connections UpDownCounter {connection} Nombre de connexions HTTP sortantes actuellement actives ou inactives sur le client
Attribut Type Description Exemples Présence
http.connection.state corde État de la connexion HTTP dans le pool de connexions HTTP. active; idle Toujours
network.protocol.version corde Version du protocole HTTP utilisé. 1.1; 2 Toujours
server.address corde L’identificateur d’hôte de la « Origine de l’URI » requête HTTP est envoyé. example.com Toujours
server.port Int L’identificateur de port de la « Origine de l’URI » requête HTTP est envoyé. 80; 8080; 443 Si ce n’est pas le cas par défaut (80 pour le schéma de http, 443 pour https)
network.peer.address corde Adresse IP homologue de la connexion de socket. 10.5.3.2 Toujours
url.scheme corde Le schéma d’URI composant identifiant le protocole utilisé. http; https; ftp Toujours

HttpClient, lorsqu’il est configuré pour utiliser le SocketsHttpHandlerpar défaut, gère un pool mis en cache de connexions réseau pour l’envoi de messages HTTP. Cette métrique compte le nombre de connexions actuellement dans le pool. Les connexions actives gèrent les requêtes actives. Les connexions actives peuvent transmettre des données ou attendre le client ou le serveur. Les connexions inactives ne gèrent pas de requêtes, mais sont laissées ouvertes afin que les futures requêtes puissent être traitées plus rapidement.

Disponible à partir de : .NET 8

Métrique : http.client.connection.duration
Nom Type d’instrument Unité (UCUM) Description
http.client.connection.duration Histogramme s Durée des connexions HTTP sortantes correctement établies.
Attribut Type Description Exemples Présence
network.protocol.version corde Version du protocole HTTP utilisé. 1.1; 2 Toujours
server.address corde L’identificateur d’hôte de la « Origine de l’URI » requête HTTP est envoyé. example.com Toujours
server.port Int L’identificateur de port de la « Origine de l’URI » requête HTTP est envoyé. 80; 8080; 443 Si ce n’est pas le cas par défaut (80 pour le schéma de http, 443 pour https)
network.peer.address corde Adresse IP de la connexion de socket. 10.5.3.2 Toujours
url.scheme corde Le schéma d’URI composant identifiant le protocole utilisé. http; https; ftp Toujours

Cette métrique est capturée uniquement lorsque HttpClient est configuré pour utiliser la SocketsHttpHandlerpar défaut.

Étant donné que cette métrique effectue le suivi de la durée de la connexion et que, dans l’idéal, les connexions HTTP sont utilisées pour plusieurs requêtes, les compartiments doivent être plus longs que ceux utilisés pour les durées de requête. Par exemple, l’utilisation de [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] fournit un compartiment supérieur de 5 minutes.

Disponible à partir de : .NET 8

Métrique : http.client.request.duration
Nom Type d’instrument Unité (UCUM) Description
http.client.request.duration Histogramme s Durée des requêtes HTTP sortantes.
Attribut Type Description Exemples Présence
error.type corde Raison de l’échec de la demande : l’une des erreurs de requête HTTP dans snake_case, ou un type d’exception complet, ou un code d’état HTTP 4xx/5xx. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 Si la demande a échoué.
http.request.method corde Méthode de requête HTTP. GET; POST; HEAD; _OTHER [2] Toujours
http.response.status_code Int code d’état de réponse HTTP. 200 Si la réponse a été reçue.
network.protocol.version corde Version du protocole HTTP utilisé. 1.1; 2 Si la réponse a été reçue.
server.address corde L’identificateur d’hôte de la « Origine de l’URI » requête HTTP est envoyé. example.com Toujours
server.port Int L’identificateur de port de la « Origine de l’URI » requête HTTP est envoyé. 80; 8080; 443 Dépend de la version de .NET. [3]
url.scheme corde Le schéma d’URI composant identifiant le protocole utilisé. http; https; ftp Toujours

[1] error.type: Si la requête a échoué, la valeur est définie sur l’une des valeurs suivantes :

  • Nom d’exception avec type, par exemple, TaskCanceledException.
  • Code d’état qui indique une erreur de client ou de serveur, par exemple, 500.
  • Si un HttpRequestException s’est produit avec une HttpRequestError autre que Unknown, valeur d’énumération dans le cas de serpent, par exemple, name_resolution_error.

[2] http.request.method:http.request.method:** La valeur contient le nom de la méthode, si la méthode est l’une des méthodes connues répertoriées dans RFC9110; sinon, la valeur est _OTHER. Les noms de méthode fournis par l’utilisateur sont mappés aux noms connus de manière non sensible à la casse. Par exemple, si l’utilisateur fournit le nom GeT, il est mappé à GET.

[3] server.port: La présence de la valeur dépend de la version :

  • .NET 8: présent s’il n’est pas défini par défaut (80 pour http schéma, 443 pour https)
  • .NET 9+ : Toujours présent

La durée de la demande du client HTTP mesure le temps nécessaire au gestionnaire client sous-jacent pour terminer la requête. La fin de la demande inclut le délai de lecture des en-têtes de réponse à partir du flux réseau. Il n’inclut pas le temps passé à lire le corps de la réponse.

Lorsque vous utilisez OpenTelemetry, les compartiments par défaut de cette métrique sont définis sur [ 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 ].

Disponible à partir de : .NET 8

Pourboire

d’enrichissement est possible pour cette métrique.

Métrique : http.client.request.time_in_queue
Nom Type d’instrument Unité (UCUM) Description
http.client.request.time_in_queue Histogramme s Durée des demandes passées sur une file d’attente en attente d’une connexion disponible.
Attribut Type Description Exemples Présence
http.request.method corde Méthode de requête HTTP. GET; POST; HEAD Toujours
network.protocol.version corde Version du protocole HTTP utilisé. 1.1; 2 Toujours
server.address corde L’identificateur d’hôte de la « Origine de l’URI » requête HTTP est envoyé. example.com Toujours
server.port Int L’identificateur de port de la « Origine de l’URI » requête HTTP est envoyé. 80; 8080; 443 Si ce n’est pas le cas par défaut (80 pour le schéma de http, 443 pour https)
url.scheme corde Le schéma d’URI composant identifiant le protocole utilisé. http; https; ftp Toujours

HttpClient, lorsqu’il est configuré pour utiliser le SocketsHttpHandlerpar défaut, envoie des requêtes HTTP à l’aide d’un pool de connexions réseau. Si toutes les connexions sont occupées à gérer d’autres demandes, les nouvelles demandes sont placées dans une file d’attente et attendent qu’une connexion réseau soit disponible pour une utilisation. Cet instrument mesure la durée pendant laquelle les requêtes HTTP passent en attente dans cette file d’attente, avant tout envoi sur le réseau.

Disponible à partir de : .NET 8

Métrique : http.client.active_requests
Nom Type d’instrument Unité (UCUM) Description
http.client.active_requests UpDownCounter {request} Nombre de requêtes HTTP actives.
Attribut Type Description Exemples Présence
http.request.method corde Méthode de requête HTTP. GET; POST; HEAD Toujours
server.address corde L’identificateur d’hôte de la « Origine de l’URI » requête HTTP est envoyé. example.com Toujours
server.port Int L’identificateur de port de la « Origine de l’URI » requête HTTP est envoyé. 80; 8080; 443 Si ce n’est pas le cas par défaut (80 pour le schéma de http, 443 pour https)
url.scheme corde Le schéma d’URI composant identifiant le protocole utilisé. http; https; ftp Toujours

Cette métrique compte le nombre de requêtes considérées comme actives. Les requêtes sont actives pendant la même période mesurée par l’instrument http.client.request.duration.

Disponible à partir de : .NET 8