Partager via


Métriques ASP.NET Core

Cet article décrit les indicateurs de performance intégrées pour ASP.NET Core produites à l’aide de l’API System.Diagnostics.Metrics. Pour une liste des indicateurs de performance basées sur l'ancienne API EventCounters, voir ici.

Conseil

Pour plus d’informations sur la collecte, le rapport, l’enrichissement et le test des métriques ASP.NET Core, consultez Utilisation des métriques ASP.NET Core.

Microsoft.AspNetCore.Hosting

Les métriques Microsoft.AspNetCore.Hosting donnent des informations générales sur les requêtes HTTP reçues par ASP.NET Core :

Métrique : http.server.request.duration
Nom Type d’instrument Unité (UCUM) Description
http.server.request.duration Histogramme s Mesure la durée des requêtes HTTP entrantes.
Attribut Type Description Exemples Présence
http.route string L'itinéraire correspondant. {controller}/{action}/{id?} Si c'est disponible.
error.type string Décrit une classe d'erreur avec laquelle l'opération s'est terminée. timeout; name_resolution_error; 500 Si la requête s'est terminée par une erreur.
http.request.method string Méthode de requête HTTP. GET; POST; HEAD Toujours
http.response.status_code int Code de statut de la réponse HTTP. 200 Si on en a envoyé un.
network.protocol.version string Version du protocole spécifié dans network.protocol.name. 3.1.1 Toujours
url.scheme string Le composant du schéma URI identifiant le protocole utilisé. http; https Toujours
aspnetcore.request.is_unhandled Boolean Vrai lorsque la requête n’a pas été traitée par le pipeline d’application. true Si la requête n'a pas été traitée.

Temps utilisé pour traiter une requête HTTP entrante, tel que mesuré au niveau de la couche d'hébergement d'ASP.NET Core. La mesure du temps démarre une fois que l'hébergeur Web sous-jacent a :

  • Analyse suffisante des en-têtes de requête HTTP sur le flux réseau entrant pour identifier la nouvelle requête.
  • Initialisation des structures de données contextuelles telles que HttpContext.

Le temps se termine lorsque :

  • L’exécution du pipeline du gestionnaire ASP.NET Core est terminée.
  • Toutes les données de réponse ont été envoyées.
  • Les structures de données contextuelles de la requête sont en cours de suppression.

Lorsque vous utilisez OpenTelemetry, les groupes de données par défaut pour cette mesure 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.0.

Métrique : http.server.active_requests
Nom Type d’instrument Unité (UCUM) Description
http.server.active_requests UpDownCounter {request} Mesure le nombre de requêtes HTTP simultanées actuellement en cours.
Attribut Type Description Exemples Présence
http.request.method string Méthode de requête HTTP. [1] GET; POST; HEAD Toujours
url.scheme string Le composant du schéma URI identifiant le protocole utilisé. http; https Toujours

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.Routing

Les métriques Microsoft.AspNetCore.Routing donnent des informations sur le routage des requêtes HTTP vers les points de terminaison ASP.NET Core :

Métrique : aspnetcore.routing.match_attempts
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.routing.match_attempts Compteur {match_attempt} Nombre de requêtes qui ont tenté d'être mises en correspondance avec un point de terminaison.
Attribut Type Description Exemples Présence
aspnetcore.routing.match_status string Résultat du match success; failure Toujours
aspnetcore.routing.is_fallback_route boolean Valeur qui indique si l’itinéraire correspondant est un itinéraire de secours. True Si un itinéraire a été mis en correspondance avec succès.
http.route string L'itinéraire adapté {controller}/{action}/{id?} Si un itinéraire a été mis en correspondance avec succès.

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.Diagnostics

Les métriques Microsoft.AspNetCore.Diagnostics donnent des informations de diagnostic provenant de l’intergiciel de gestion des erreurs d’ASP.NET Core :

Métrique : aspnetcore.diagnostics.exceptions
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.diagnostics.exceptions Compteur {exception} Nombre d'exceptions interceptées par le middleware de gestion des exceptions.
Attribut Type Description Exemples Présence
aspnetcore.diagnostics.exception.result string Résultat de la gestion du middleware des exceptions ASP.NET Core handled; unhandled Toujours
aspnetcore.diagnostics.handler.type string Nom de type complet de l’implémentation IExceptionHandler qui a géré l’exception. Contoso.MyHandler Si l'exception a été gérée par ce gestionnaire.
exception.type string Le nom complet du type d’exception. System.OperationCanceledException; Contoso.MyException Toujours

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.RateLimiting

Les métriques Microsoft.AspNetCore.RateLimiting donnent des informations sur la limitation du débit provenant de l’intergiciel de limitation du débit d’ASP.NET Core :

Métrique : aspnetcore.rate_limiting.active_request_leases
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Nombre de requêtes actuellement actives sur le serveur qui détiennent un bail à limitation de débit.
Attribut Type Description Exemples Présence
aspnetcore.rate_limiting.policy string Nom de la stratégie de limitation de débit. fixed; sliding; token Si le point de terminaison correspondant à la requête avait une stratégie de limitation de débit.

Disponible à partir de : .NET 8.0.

Métrique : aspnetcore.rate_limiting.request_lease.duration
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.rate_limiting.request_lease.duration Histogramme s La durée du bail de limitation de débit détenu par les requêtes sur le serveur.
Attribut Type Description Exemples Présence
aspnetcore.rate_limiting.policy string Nom de la stratégie de limitation de débit. fixed; sliding; token Si le point de terminaison correspondant à la requête avait une stratégie de limitation de débit.

Disponible à partir de : .NET 8.0.

Métrique : aspnetcore.rate_limiting.queued_requests
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Nombre de demandes actuellement en file d'attente en attente d'acquisition d'un bail à limitation de débit.
Attribut Type Description Exemples Présence
aspnetcore.rate_limiting.policy string Nom de la stratégie de limitation de débit. fixed; sliding; token Si le point de terminaison correspondant à la requête avait une stratégie de limitation de débit.

Disponible à partir de : .NET 8.0.

Métrique : aspnetcore.rate_limiting.request.time_in_queue
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.rate_limiting.request.time_in_queue Histogramme s Temps passé par une requête dans une file d'attente en attente d'acquisition d'un bail à limitation de débit.
Attribut Type Description Exemples Présence
aspnetcore.rate_limiting.policy string Nom de la stratégie de limitation de débit. fixed; sliding; token Si le point de terminaison correspondant à la requête avait une stratégie de limitation de débit.
aspnetcore.rate_limiting.result string Le résultat de la limitation du tarif indique si le bail a été acquis ou s'il contient un motif de rejet. acquired; request_canceled Toujours

Disponible à partir de : .NET 8.0.

Métrique : aspnetcore.rate_limiting.requests
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.rate_limiting.requests Compteur {request} Nombre de requêtes ayant tenté d'acquérir un bail à taux limité.
Attribut Type Description Exemples Présence
aspnetcore.rate_limiting.policy string Nom de la stratégie de limitation de débit. fixed; sliding; token Si le point de terminaison correspondant à la requête avait une stratégie de limitation de débit.
aspnetcore.rate_limiting.result string Le résultat de la limitation du tarif indique si le bail a été acquis ou s'il contient un motif de rejet. acquired; request_canceled Toujours

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.HeaderParsing

Les métriques Microsoft.AspNetCore.HeaderParsing donnent des informations sur l’analyse des en-têtes d’ASP.NET Core :

Métrique : aspnetcore.header_parsing.parse_errors
Nom Type d’instrument Unité (UCUM) Description
aspnetcore.header_parsing.parse_errors Compteur {parse_error} Nombre d’erreurs qui se sont produites lors de l’analyse des en-têtes de requête HTTP.
Attribut Type Description Exemples Présence
aspnetcore.header_parsing.header.name string Nom de l'en-tête. Content-Type Toujours
error.type string Message d’erreur. Unable to parse media type value. Toujours

Disponible à partir de : .NET 8.0.

Métrique : aspnetcore.header_parsing.cache_accesses

La métrique est émise uniquement pour les analyseurs d’en-tête de requête HTTP qui prennent en charge la mise en cache.

Nom Type d’instrument Unité (UCUM) Description
aspnetcore.header_parsing.cache_accesses Compteur {cache_access} Nombre de fois qu’un cache stockant les valeurs d’en-tête analysées a été accédé.
Attribut Type Description Exemples Présence
aspnetcore.header_parsing.header.name string Nom de l'en-tête. Content-Type Toujours
aspnetcore.header_parsing.cache_access.type string Valeur indiquant si la valeur de l’en-tête a été trouvée dans le cache ou non. Hit; Miss Toujours

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.Server.Kestrel

Les métriques Microsoft.AspNetCore.Server.Kestrel donnent des informations sur les connexions HTTP provenant du serveur web Kestrel d’ASP.NET Core :

Métrique : kestrel.active_connections
Nom Type d’instrument Unité (UCUM) Description
kestrel.active_connections UpDownCounter {connection} Nombre de connexions actuellement actives sur le serveur.
Attribut Type Description Exemples Présence
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Disponible à partir de : .NET 8.0.

Métrique : kestrel.connection.duration
Nom Type d’instrument Unité (UCUM) Description
kestrel.connection.duration Histogramme s La durée des connexions sur le serveur.
Attribut Type Description Exemples Présence
error.type string Le nom complet du type d’exception. System.OperationCanceledException; Contoso.MyException Si une exception a été levée.
network.protocol.name string Couche application OSI ou équivalent non OSI. http; web_sockets Toujours
network.protocol.version string Version du protocole spécifié dans network.protocol.name. 1.1; 2 Toujours
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.
tls.protocol.version string Version du protocole TLS. 1.2; 1.3 Si la connexion est sécurisée avec TLS.

Étant donné que cette mesure suit la durée de la connexion et que, dans l’idéal, les connexions HTTP sont utilisées pour plusieurs requêtes, les intervalles doivent être plus longs que ceux utilisés pour les durées des requêtes. Par exemple, pour un compartiment supérieur de 5 minutes, on utilisera [ 0,01, 0,02, 0,05, 0,1, 0,2, 0,5, 1, 2, 5, 10, 30, 60, 120, 300].

Disponible à partir de : .NET 8.0.

Métrique : kestrel.rejected_connections
Nom Type d’instrument Unité (UCUM) Description
kestrel.rejected_connections Compteur {connection} Nombre de connexions rejetées par le serveur.
Attribut Type Description Exemples Présence
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Les connexions sont rejetées lorsque le nombre actuellement actif dépasse la valeur configurée avec MaxConcurrentConnections.

Disponible à partir de : .NET 8.0.

Métrique : kestrel.queued_connections
Nom Type d’instrument Unité (UCUM) Description
kestrel.queued_connections UpDownCounter {connection} Nombre de connexions actuellement en file d'attente et en attente de démarrage.
Attribut Type Description Exemples Présence
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Disponible à partir de : .NET 8.0.

Métrique : kestrel.queued_requests
Nom Type d’instrument Unité (UCUM) Description
kestrel.queued_requests UpDownCounter {request} Nombre de requêtes HTTP sur les connexions multiplexées (HTTP/2 et HTTP/3) actuellement en file d'attente et en attente de démarrage.
Attribut Type Description Exemples Présence
network.protocol.name string Couche application OSI ou équivalent non OSI. http; web_sockets Toujours
network.protocol.version string Version du protocole spécifié dans network.protocol.name. 1.1; 2 Toujours
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Disponible à partir de : .NET 8.0.

Métrique : kestrel.upgraded_connections
Nom Type d’instrument Unité (UCUM) Description
kestrel.upgraded_connections UpDownCounter {connection} Nombre de connexions actuellement mises à niveau (WebSockets).
Attribut Type Description Exemples Présence
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Le compteur suit uniquement les connexions HTTP/1.1.

Disponible à partir de : .NET 8.0.

Métrique : kestrel.tls_handshake.duration
Nom Type d’instrument Unité (UCUM) Description
kestrel.tls_handshake.duration Histogramme s La durée des établissements d’une liaison TLS sur le serveur.
Attribut Type Description Exemples Présence
error.type string Le nom complet du type d’exception. System.OperationCanceledException; Contoso.MyException Si une exception a été levée.
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.
tls.protocol.version string Version du protocole TLS. 1.2; 1.3 Si la connexion est sécurisée avec TLS.

Lors de l’utilisation d’OpenTelemetry, les compartiments de cette mesure sont définis par défaut 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.0.

Métrique : kestrel.active_tls_handshakes
Nom Type d’instrument Unité (UCUM) Description
kestrel.active_tls_handshakes UpDownCounter {handshake} Nombre d’établissement d’une liaison TLS actuellement en cours sur le serveur.
Attribut Type Description Exemples Présence
network.transport string Couche de transport OSI ou méthode de communication inter-processus. tcp; unix Toujours
network.type string Couche réseau OSI ou équivalent non OSI. ipv4; ipv6 Si le transport est tcp ou udp.
server.address string Nom de domaine de l'adresse du serveur s'il est disponible sans recherche DNS inversée ; sinon, l'adresse IP ou le nom du socket de domaine Unix. example.com Toujours
server.port int Numéro de port du serveur 80; 8080; 443 Si le transport est tcp ou udp.

Disponible à partir de : .NET 8.0.

Microsoft.AspNetCore.Http.Connections

Les métriques Microsoft.AspNetCore.Http.Connections donnent des informations sur les connexions provenant de SignalR d’ASP.NET Core :

Métrique : signalr.server.connection.duration
Nom Type d’instrument Unité (UCUM) Description
signalr.server.connection.duration Histogramme s La durée des connexions sur le serveur.
Attribut Type Description Exemples Présence
signalr.connection.status string État de fermeture de la connexion HTTP SignalR. app_shutdown; timeout Toujours
signalr.transport string Type de transport SignalR web_sockets; long_polling Toujours

Disponible à partir de : .NET 8.0.

Valeur Description
normal_closure La connexion était fermée normalement.
timeout La connexion a été fermée en raison d'un délai d'attente.
app_shutdown La connexion a été fermée car l'application est en train de se fermer.

signalr.transport prend l’une des valeurs suivantes :

Valeur Protocole
server_sent_events événements envoyés par le serveur
long_polling Longue interrogation
web_sockets WebSocket

Étant donné que cette mesure suit la durée de la connexion et que, dans l’idéal, les connexions SignalR sont durables, les intervalles doivent être plus longs que ceux utilisés pour les durées des requêtes. Par exemple, pour un compartiment supérieur de 5 minutes, on utilisera [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300].

Disponible à partir de : .NET 8.0.

Métrique : signalr.server.active_connections
Nom Type d’instrument Unité (UCUM) Description
signalr.server.active_connections UpDownCounter {connection} Nombre de connexions actuellement actives sur le serveur.
Attribut Type Description Exemples Présence
signalr.connection.status string État de fermeture de la connexion HTTP SignalR. app_shutdown; timeout Toujours
signalr.transport string Type de transport SignalR web_sockets; long_polling Toujours

Disponible à partir de : .NET 8.0.