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.
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.
Documentation, liens et articles supplémentaires utiles: