Métriques runtime

Présentation

Les métriques runtime surveillent l’utilisation de la mémoire, la collecte des déchets et la parallélisation de votre application. Les bibliothèques de tracing Datadog collectent automatiquement ces métriques pour les environnements pris en charge et les envoient à l’Agent Datadog.

Ces métriques vous aident à identifier les goulots d’étranglement, à résoudre les problèmes de performance et à optimiser l’utilisation des ressources. En visualisant les métriques runtime conjointement avec les traces et les logs, vous obtenez une visibilité complète sur la santé et les performances de votre application.

Compatibilité

Les métriques runtime sont disponibles pour plusieurs langages de programmation et environnements d’exécution, avec des niveaux de support et des options de configuration variables.

  • Activé par défaut : Oui
  • Version de la bibliothèque : 0.29.0+
  • Runtime : Java 8+
La collecte des métriques JMX n'est pas prise en charge dans les environnements AWS Lambda.
  • Activé par défaut : Non
  • Version de la bibliothèque : 0.30.0+
  • Niveau de prise en charge : Aperçu
  • Runtime : Toutes les versions de Python prises en charge
  • Activé par défaut : Non
  • Version de la bibliothèque : 0.44.0+
  • Runtime : Toutes les versions de Ruby prises en charge
Vous devez ajouter la gem dogstatsd-ruby à votre application.
  • Activé par défaut : Non
  • Version de la bibliothèque : 1.18.0+
  • Runtime : Toutes les versions de Go prises en charge
  • Activé par défaut : Non
  • Version de la bibliothèque : 3.0.0+
  • Runtime : Toutes les versions de Node.js prises en charge
  • Activé par défaut : Non
  • Version de la bibliothèque : 1.23.0+
  • Runtime: .NET Framework 4.6.1+ et .NET Core 3.1+ (y compris .NET 5 et ultérieur).

Autorisations pour Internet Information Services (IIS)

Sur .NET Framework, les métriques peuvent être recueillies à l’aide de compteurs de performances. Les utilisateurs avec une session ouverte non interactive (notamment ceux avec des comptes de pool d’applications IIS et certains comptes de service) doivent être ajoutés au groupe Performance Monitoring Users pour accéder aux données des compteurs.

Les pools d’applications IIS utilisent des comptes spéciaux qui n’apparaissent pas dans la liste des utilisateurs. Pour les ajouter au groupe Performance Monitoring Users, recherchez IIS APPPOOL\<nom du pool>. Par exemple, l’utilisateur pour DefaultAppPool est IIS APPPOOL\DefaultAppPool.

Vous pouvez effectuer cette opération depuis l’interface Computer Management, ou depuis l’invite de commandes administrateur :

net localgroup "Performance Monitor Users" "IIS APPPOOL\DefaultAppPool" /add
Les métriques runtime pour PHP ne sont pas prises en charge.
Les métriques runtime pour C++ ne sont pas prises en charge.

Instructions de configuration

Pour configurer les métriques runtime, vous devez configurer à la fois l’Agent Datadog et votre application.

1. Configurer l’Agent Datadog

Activez DogStatsD pour l’Agent. Par défaut, l’Agent Datadog est configuré pour ingérer les métriques via UDP sur le port 8125.

Lors de l’exécution de l’Agent dans des environnements conteneurisés, une configuration supplémentaire est nécessaire :

  1. Définissez dogstatsd_non_local_traffic: true dans votre fichier principal de configuration datadog.yaml, ou définissez la variable d’environnement DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true.
  2. Suivez ces instructions de configuration spécifiques aux conteneurs :
Docker
Kubernetes
Amazon ECS
ECS Fargate

  1. Définissez DD_SITE dans l’Agent Datadog sur pour vous assurer que l’Agent envoie les données au bon site Datadog.

2. Configurer votre application

Configurez les métriques runtime dans votre application a l’aide de variables d’environnement. Certains langages prennent également en charge la configuration des métriques runtime directement dans le code.

Variables d’environnement

Utilisez les variables d’environnement suivantes pour configurer les métriques runtime dans votre application :

DD_RUNTIME_METRICS_ENABLED
Par défaut : true pour Java, false pour les autres langages<br> Description : Active la collecte des métriques runtime. Les métriques sont envoyées à l’Agent Datadog, selon la configuration de l’application instrumentée.
DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED
Par défaut : true pour Java, false pour Node.js, Ruby et Python. N’existe pas pour .NET et Go ; le runtime_id est toujours rapporté.<br> Description : Active les métriques runtime améliorées, en ajoutant un tag runtime_id à chaque métrique. Le runtime_id représente l’identifiant du processus de l’application et permet de corréler directement les métriques runtime avec chaque application en cours d’exécution.
DD_AGENT_HOST
Par défaut : localhost <br> Description : Définit l’adresse du host pour la soumission des métriques par la bibliothèque de tracing. Il peut s’agir d’un nom de host ou d’une adresse IP.
DD_DOGSTATSD_PORT
Par défaut : 8125
Description : Définit le port pour l’envoi des métriques par la bibliothèque de tracing.

Configuration basée sur le code

En plus des variables d’environnement, certains langages permettent de configurer les métriques runtime directement dans le code.

Vous pouvez uniquement activer les métriques runtime à l’aide de variables d’environnement.

Cependant, vous pouvez étendre les métriques collectées en ajoutant des métriques JMX custom. Pour plus d’informations, consultez la documentation de l’intégration JMX.

Vous pouvez activer les métriques runtime à l’aide de variables d’environnement ou directement dans le code :

from ddtrace.runtime import RuntimeMetrics
RuntimeMetrics.enable()
Cela s'applique uniquement si vous n'utilisez pas ddtrace-run

Vous pouvez activer les métriques runtime à l’aide de variables d’environnement ou directement dans le code :

# config/initializers/datadog.rb
require 'datadog/statsd'
require 'datadog' # Utilisez 'ddtrace' si vous utilisez v1.x

Datadog.configure do |c|
  c.runtime_metrics.enabled = true

  # Vous pouvez, si vous le souhaitez, configurer l'instance DogStatsD utilisée pour l'envoi des métriques runtime.
  # DogStatsD est automatiquement configuré avec les paramètres par défaut si `dogstatsd-ruby` est disponible.   
  # Vous pouvez la configurer avec le host et le port de l'Agent Datadog ; la valeur par défaut est 'localhost:8125'.
  c.runtime_metrics.statsd = Datadog::Statsd.new
end

Vous pouvez activer les métriques runtime à l’aide de variables d’environnement ou directement dans le code :

// Configuration basique
tracer.Start(tracer.WithRuntimeMetrics())

// Avec une adresse DogStatsD personnalisée
tracer.Start(
  tracer.WithRuntimeMetrics(),
  tracer.WithDogstatsdAddr("custom-host:8125")
)

L’option WithDogstatsdAddr permet de spécifier une adresse personnalisée pour le serveur DogStatsD. Utilisez WithDogstatsdAddr (ou WithDogstatsdAddress v1) si votre adresse diffère de la valeur par défaut localhost:8125. (Disponible à partir de la version 1.18.0+).

Vous pouvez activer les métriques runtime à l’aide de variables d’environnement ou directement dans le code :

const tracer = require('dd-trace').init({
  // Autres options du tracer...
  runtimeMetrics: true
})

Vous pouvez uniquement activer les métriques runtime à l’aide de variables d’environnement.

Dashboards

Une fois la configuration terminée, vous pouvez afficher les métriques runtime dans :

  • La page des détails du service instrumenté
  • L’onglet Metrics du flame graph
  • Dashboards runtime par défaut
Trace runtime JVM

Dépannage

  • Pour associer les métriques runtime aux flame graphs, assurez-vous que le tag env (sensible à la casse) est défini et identique dans tout votre environnement.
  • Pour que les métriques runtime s’affichent sur la page du service lorsque vous utilisez Fargate, assurez-vous que DD_DOGSTATSD_TAGS est défini sur la tâche de votre Agent, et que le tag env configuré correspond à celui du service instrumenté.

Données collectées

Chaque langage pris en charge collecte un ensemble de métriques runtime fournissant des informations sur l’utilisation de la mémoire, la collecte des déchets, l’utilisation du CPU et d’autres indicateurs de performance.

jvm.heap_memory
(gauge)
The total Java heap memory used.
Shown as byte
jvm.heap_memory_committed
(gauge)
The total Java heap memory committed to be used.
Shown as byte
jvm.heap_memory_init
(gauge)
The initial Java heap memory allocated.
Shown as byte
jvm.heap_memory_max
(gauge)
The maximum Java heap memory available.
Shown as byte
jvm.loaded_classes
(gauge)
Number of classes currently loaded.
jvm.non_heap_memory
(gauge)
The total Java non-heap memory used. Non-heap memory is calculated as follows: Metaspace + CompressedClassSpace + CodeCache
Shown as byte
jvm.non_heap_memory_committed
(gauge)
The total Java non-heap memory committed to be used.
Shown as byte
jvm.non_heap_memory_init
(gauge)
The initial Java non-heap memory allocated.
Shown as byte
jvm.non_heap_memory_max
(gauge)
The maximum Java non-heap memory available.
Shown as byte
jvm.thread_count
(count)
The number of live threads.
Shown as thread
jvm.gc.cms.count
(count)
The total number of garbage collections that have occurred.
jvm.gc.major_collection_count
(gauge)
The rate of major garbage collections. Set new_gc_metrics: true to receive this metric.
jvm.gc.minor_collection_count
(gauge)
The rate of minor garbage collections. Set new_gc_metrics: true to receive this metric.
jvm.gc.parnew.time
(gauge)
The approximate accumulated garbage collection time elapsed.
Shown as millisecond
jvm.gc.major_collection_time
(gauge)
The fraction of time spent in major garbage collection. Set new_gc_metrics: true to receive this metric.
Shown as permille
jvm.gc.minor_collection_time
(gauge)
The fraction of time spent in minor garbage collection. Set new_gc_metrics: true to receive this metric.
Shown as permille
runtime.python.cpu.time.sys
(gauge)
Number of seconds executing in the kernel
Shown as second
runtime.python.cpu.time.user
(gauge)
Number of seconds executing outside the kernel
Shown as second
runtime.python.cpu.percent
(gauge)
CPU utilization percentage
Shown as percent
runtime.python.cpu.ctx_switch.voluntary
(gauge)
Number of voluntary context switches
Shown as invocation
runtime.python.cpu.ctx_switch.involuntary
(gauge)
Number of involuntary context switches
Shown as invocation
runtime.python.gc.count.gen0
(gauge)
Number of generation 0 objects
Shown as resource
runtime.python.gc.count.gen1
(gauge)
Number of generation 1 objects
Shown as resource
runtime.python.gc.count.gen2
(gauge)
Number of generation 2 objects
Shown as resource
runtime.python.mem.rss
(gauge)
Resident set memory
Shown as byte
runtime.python.thread_count
(gauge)
Number of threads
Shown as thread
runtime.ruby.class_count
(gauge)
Total number of classes loaded
Shown as resource
runtime.ruby.gc.remembered_wb_unprotected_objects
(gauge)
Number of write-barrier unprotected objects in the remembered set
Shown as resource
runtime.ruby.gc.remembered_wb_unprotected_objects_limit
(gauge)
Limit on write-barrier unprotected objects allowed in the remembered set
Shown as resource
runtime.ruby.gc.oldmalloc_increase_bytes
(gauge)
Total bytes allocated to old objects
Shown as byte
runtime.ruby.gc.oldmalloc_increase_bytes_limit
(gauge)
Bytes limit that will trigger garbage collection of old objects
Shown as byte
runtime.ruby.gc.malloc_increase_bytes
(gauge)
Total bytes allocated to objects
Shown as byte
runtime.ruby.gc.malloc_increase_bytes_limit
(gauge)
Bytes limit that will trigger garbage collection of objects
Shown as byte
runtime.ruby.gc.total_allocated_objects
(gauge)
Total number of allocated objects over the lifetime of this process
Shown as resource
runtime.ruby.gc.total_freed_objects
(gauge)
Total number of freed objects over the lifetime of this process
Shown as resource
runtime.ruby.gc.total_allocated_pages
(gauge)
Total number of allocated pages over the lifetime of this process
Shown as page
runtime.ruby.gc.total_freed_pages
(gauge)
Total number of freed pages over the lifetime of this process
Shown as page
runtime.ruby.gc.heap_live_slots
(gauge)
Number of live objects slots
Shown as resource
runtime.ruby.gc.heap_final_slots
(gauge)
Number of object slots with finalizers attached to them
Shown as resource
runtime.ruby.gc.heap_marked_slots
(gauge)
Count of old objects which survived more than 3 GC cycles and number of write-barrier unprotected objects
Shown as resource
runtime.ruby.gc.heap_available_slots
(gauge)
Total number of slots in heap pages
Shown as resource
runtime.ruby.gc.heap_free_slots
(gauge)
Number of free slots in heap pages
Shown as resource
runtime.ruby.thread_count
(gauge)
Total number of threads
Shown as thread
runtime.ruby.gc.old_objects
(gauge)
Total number of old objects
Shown as resource
runtime.ruby.gc.old_objects_limit
(gauge)
Limit on number of old objects
Shown as resource
runtime.ruby.global_constant_state
(gauge)
Global constant cache generation
Shown as event
runtime.ruby.global_method_state
(gauge)
Global method cache generation
Shown as event
runtime.ruby.constant_cache_invalidations
(gauge)
Constant cache invalidations
Shown as resource
runtime.ruby.constant_cache_misses
(gauge)
Constant cache misses
Shown as resource
runtime.go.num_cpu
(gauge)
CPUs detected by the runtime.
Shown as resource
runtime.go.num_goroutine
(gauge)
goroutines spawned.
Shown as invocation
runtime.go.num_cgo_call
(gauge)
CGO calls made.
Shown as invocation
runtime.go.mem_stats.alloc
(gauge)
Alloc is bytes of allocated heap objects.
Shown as byte
runtime.go.mem_stats.total_alloc
(gauge)
TotalAlloc is cumulative bytes allocated for heap objects.
Shown as byte
runtime.go.mem_stats.sys
(gauge)
Sys is the total bytes of memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.lookups
(gauge)
Lookups is the number of pointer lookups performed by the
Shown as unit
runtime.go.mem_stats.mallocs
(gauge)
Mallocs is the cumulative count of heap objects allocated.
Shown as unit
runtime.go.mem_stats.frees
(gauge)
Frees is the cumulative count of heap objects freed.
Shown as unit
runtime.go.mem_stats.heap_alloc
(gauge)
HeapAlloc is bytes of allocated heap objects.
Shown as byte
runtime.go.mem_stats.heap_sys
(gauge)
HeapSys is bytes of heap memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.heap_idle
(gauge)
HeapIdle is bytes in idle (unused) spans.
Shown as byte
runtime.go.mem_stats.heap_inuse
(gauge)
HeapInuse is bytes in in-use spans.
Shown as byte
runtime.go.mem_stats.heap_released
(gauge)
HeapReleased is bytes of physical memory returned to the OS.
Shown as byte
runtime.go.mem_stats.heap_objects
(gauge)
HeapObjects is the number of allocated heap objects.
Shown as unit
runtime.go.mem_stats.stack_inuse
(gauge)
StackInuse is bytes in stack spans.
Shown as byte
runtime.go.mem_stats.stack_sys
(gauge)
StackSys is bytes of stack memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.m_span_inuse
(gauge)
MSpanInuse is bytes of allocated mspan structures.
Shown as byte
runtime.go.mem_stats.m_span_sys
(gauge)
MSpanSys is bytes of memory obtained from the OS for mspan structures.
Shown as byte
runtime.go.mem_stats.m_cache_inuse
(gauge)
MCacheInuse is bytes of allocated mcache structures.
Shown as byte
runtime.go.mem_stats.m_cache_sys
(gauge)
MCacheSys is bytes of memory obtained from the OS for
Shown as byte
runtime.go.mem_stats.buck_hash_sys
(gauge)
BuckHashSys is bytes of memory in profiling bucket hash tables.
Shown as byte
runtime.go.mem_stats.gc_sys
(gauge)
GCSys is bytes of memory in garbage collection metadata.
Shown as byte
runtime.go.mem_stats.other_sys
(gauge)
OtherSys is bytes of memory in miscellaneous off-heap
Shown as byte
runtime.go.mem_stats.next_gc
(gauge)
NextGC is the target heap size of the next GC cycle.
Shown as byte
runtime.go.mem_stats.last_gc
(gauge)
LastGC is the time the last garbage collection finished, as nanoseconds since 1970 (the UNIX epoch).
Shown as nanosecond
runtime.go.mem_stats.pause_total_ns
(gauge)
PauseTotalNs is the cumulative nanoseconds in GC
Shown as nanosecond
runtime.go.mem_stats.num_gc
(gauge)
NumGC is the number of completed GC cycles.
Shown as unit
runtime.go.mem_stats.num_forced_gc
(gauge)
NumForcedGC is the number of GC cycles that were forced by the application calling the GC function.
Shown as unit
runtime.go.mem_stats.gc_cpu_fraction
(gauge)
GCCPUFraction is the fraction of this program’s available CPU time used by the GC since the program started.
Shown as fraction
runtime.go.gc_stats.pause_quantiles.min
(gauge)
Distribution of GC pause times: minimum values
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.25p
(gauge)
Distribution of GC pause times: 25th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.75p
(gauge)
Distribution of GC pause times: 50th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.95p
(gauge)
Distribution of GC pause times: 75th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.max
(gauge)
Distribution of GC pause times: maximum values
Shown as nanosecond
runtime.node.cpu.user
(gauge)
CPU usage in user code
Shown as percent
runtime.node.cpu.system
(gauge)
CPU usage in system code
Shown as percent
runtime.node.cpu.total
(gauge)
Total CPU usage
Shown as percent
runtime.node.mem.rss
(gauge)
Resident set size
Shown as byte
runtime.node.mem.heap_total
(gauge)
Total heap memory
Shown as byte
runtime.node.mem.heap_used
(gauge)
Heap memory usage
Shown as byte
runtime.node.mem.external
(gauge)
External memory
Shown as byte
runtime.node.heap.total_heap_size
(gauge)
Total heap size
Shown as byte
runtime.node.heap.total_heap_size_executable
(gauge)
Total executable heap size
Shown as byte
runtime.node.heap.total_physical_size
(gauge)
Total physical heap size
Shown as byte
runtime.node.heap.used_heap_size
(gauge)
Used heap size
Shown as byte
runtime.node.heap.heap_size_limit
(gauge)
Heap size limit
Shown as byte
runtime.node.heap.malloced_memory
(gauge)
Malloced memory
Shown as byte
runtime.node.heap.peak_malloced_memory
(gauge)
Peak allocated memory
Shown as byte
runtime.node.heap.size.by.space
(gauge)
Heap space size
Shown as byte
runtime.node.heap.used_size.by.space
(gauge)
Heap space used size
Shown as byte
runtime.node.heap.available_size.by.space
(gauge)
Heap space available size
Shown as byte
runtime.node.heap.physical_size.by.space
(gauge)
Heap space physical size
Shown as byte
runtime.node.process.uptime
(gauge)
Process uptime
Shown as second
runtime.node.event_loop.delay.max
(gauge)
Maximum event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.min
(gauge)
Minimum event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.avg
(gauge)
Average event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.sum
(rate)
Total event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.median
(gauge)
Median event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.95percentile
(gauge)
95th percentile event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.count
(rate)
Event loop iteration count where a delay is detected
Shown as execution
runtime.node.gc.pause.max
(gauge)
Maximum garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.min
(gauge)
Minimum garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.avg
(gauge)
Average garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.sum
(rate)
Total garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.median
(gauge)
Median garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.95percentile
(gauge)
95th percentile garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.count
(rate)
Number of garbage collections
Shown as garbage collection
runtime.node.gc.pause.by.type.max
(gauge)
Maximum garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.min
(gauge)
Minimum garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.avg
(gauge)
Average garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.sum
(rate)
Total garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.median
(gauge)
Median garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.95percentile
(gauge)
95th percentile garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.count
(rate)
Number of garbage collections by type
Shown as garbage collection
runtime.dotnet.cpu.system
(gauge)
The number of milliseconds executing in the kernel
Shown as millisecond
runtime.dotnet.cpu.user
(gauge)
The number of milliseconds executing outside the kernel
Shown as millisecond
runtime.dotnet.cpu.percent
(gauge)
The percentage of total CPU used by the application
Shown as percent
runtime.dotnet.mem.committed
(gauge)
Memory usage
Shown as byte
runtime.dotnet.threads.count
(gauge)
The number of threads
Shown as thread
runtime.dotnet.threads.workers_count
(gauge)
The number of workers in the threadpool (.NET Core 3.1+ only)
Shown as thread
runtime.dotnet.threads.contention_time
(gauge)
The cumulated time spent by threads waiting on a lock (.NET Core 3.1+ only)
Shown as millisecond
runtime.dotnet.threads.contention_count
(count)
The number of times a thread stopped to wait on a lock
runtime.dotnet.exceptions.count
(count)
The number of first-chance exceptions
Shown as exception
runtime.dotnet.gc.size.gen0
(gauge)
The size of the gen 0 heap
Shown as byte
runtime.dotnet.gc.size.gen1
(gauge)
The size of the gen 1 heap
Shown as byte
runtime.dotnet.gc.size.gen2
(gauge)
The size of the gen 2 heap
Shown as byte
runtime.dotnet.gc.size.loh
(gauge)
The size of the large object heap
Shown as byte
runtime.dotnet.gc.memory_load
(gauge)
The percentage of the total memory used by the process. The GC changes its behavior when this value gets above 85. (.NET Core 3.1+ only)
Shown as percent
runtime.dotnet.gc.pause_time
(gauge)
The amount of time the GC paused the application threads (.NET Core 3.1+ only)
Shown as millisecond
runtime.dotnet.gc.count.gen0
(count)
The number of gen 0 garbage collections
Shown as garbage collection
runtime.dotnet.gc.count.gen1
(count)
The number of gen 1 garbage collections
Shown as garbage collection
runtime.dotnet.gc.count.gen2
(count)
The number of gen 2 garbage collections
Shown as garbage collection
runtime.dotnet.aspnetcore.requests.total
(gauge)
The total number of HTTP requests received by the server (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.failed
(gauge)
The number of failed HTTP requests received by the server (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.current
(gauge)
The total number of HTTP requests that have started but not yet stopped (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.queue_length
(gauge)
The current length of the server HTTP request queue (.NET 5+ only)
Shown as request
runtime.dotnet.aspnetcore.connections.total
(gauge)
The total number of HTTP connections established to the server (.NET 5+ only)
Shown as connection
runtime.dotnet.aspnetcore.connections.current
(gauge)
The current number of active HTTP connections to the server (.NET 5+ only)
Shown as connection
runtime.dotnet.aspnetcore.connections.queue_length
(gauge)
The current length of the HTTP server connection queue (.NET 5+ only)
Shown as connection

Pour aller plus loin