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 runtime, 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 instance 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'Azgent 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 par le biais de 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, liez le port DogstatsD au port d’un 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 |
runtime.ruby.global_constant_state (gauge) | Global constant cache generation Shown as generation |
runtime.ruby.global_method_state (gauge) | Global method cache generation Shown as generation |
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
Documentation, liens et articles supplémentaires utiles: