Métriques ASP.NET Core
Article 02/06/2024
8 contributeurs
Commentaires
Dans cet article
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 .
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
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
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
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
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
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.
Les métriques Microsoft.AspNetCore.HeaderParsing
donnent des informations sur l’analyse des en-têtes d’ASP.NET Core :
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.
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
Attribut
Type
Description
Exemples
Présence
error.type
string
Décrit un type d’erreur avec lequel la connexion s’est terminée ou le type d’exception non géré levée pendant le pipeline de connexion. Des erreurs de connexion connues se trouvent dans les conventions sémantiques pour les métriques de serveur web Kestrel.
connection_reset
; invalid_request_headers
; ; System.OperationCanceledException
Si la connexion s’est terminée avec une erreur connue ou qu’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].
À compter de .NET 9, lorsqu’une connexion se termine par une erreur connue, la valeur de l’attribut error.type
est définie sur le type d’erreur connu. Des erreurs de connexion connues se trouvent dans les conventions sémantiques pour les métriques de serveur web Kestrel.
Disponible à partir de : .NET 8.
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
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 :
É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.