Métriques de runtime Ruby
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Métriques de runtime Ruby

Cette fonctionnalité est actuellement en version bêta privée. Contactez l'assistance afin de demander son activation pour votre compte.

Configuration automatique

La collecte de métriques runtime utilise le gem dogstatsd-ruby pour envoyer des métriques à l’Agent via DogStatsD. Pour recueillir des métriques runtime, vous devez ajouter ce gem à votre application Ruby et vous assurer que DogStatsD est activé pour l’Agent.

La collecte de métriques est désactivée par défaut. Vous pouvez l’activer en définissant la variable d’environnement DD_RUNTIME_METRICS_ENABLED sur true ou en définissant la configuration suivante dans votre application Ruby :

# config/initializers/datadog.rb
require 'datadog/statsd'
require 'ddtrace'

Datadog.configure do |c|
  # Pour activer la collecte de métriques, définir sur `true`. Valeur par défaut : `false`
  # Vous pouvez aussi définir DD_RUNTIME_METRICS_ENABLED=true pour configurer ce paramètre.
  c.runtime_metrics_enabled = true

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

Les métriques runtime peuvent être visualisées conjointement à vos services Ruby. Consultez la page Service dans Datadog.

Par défaut, les métriques runtime de votre application sont envoyées à l’Agent Datadog via DogStatsD sur le port 8125. Veillez à ce que DogStatsD soit activé pour l’Agent. Si vous exécutez l’Agent en tant que conteneur, assurez-vous que DD_DOGSTATSD_NON_LOCAL_TRAFFIC est défini sur true et que le port 8125 est ouvert sur l’Agent. Dans Kubernetes, associez le port DogstatsD à un port du host ; dans ECS, indiquez les flags pertinents dans la définition de votre tâche.

Données collectées

Les métriques suivantes sont recueillies par défaut après l’activation des métriques runtime.

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

Datadog fournit non seulement ces métriques sur votre page Service de l’APM, mais également un dashboard de runtime Ruby par défaut comportant les tags service et runtime-id appliqués à ces métriques.

Pour aller plus loin