Métricas de tiempo de ejecución de Ruby
Esta función está en fase beta pública.
Configuración automática
La recopilación de métricas de tiempo de ejecución utiliza el gem dogstatsd-ruby
para enviar métricas a través de DogStatsD al Agent. Para recopilar métricas de tiempo de ejecución, debes añadir este gem a tu aplicación Ruby y asegurarte de que DogStatsD está habilitado para el Agent.
La recopilación de métricas está desactivada por defecto. Puedes activarla al establecer la variable de entorno DD_RUNTIME_METRICS_ENABLED
en true
, o con la siguiente configuración en tu aplicación Ruby:
# config/initializers/datadog.rb
require 'datadog/statsd'
require 'datadog' # Use 'ddtrace' if you're using v1.x
Datadog.configure do |c|
# Para activar la recopilación de métricas de tiempo de ejecución, establece en `true`. Por defecto es `false`
# También puedes establecer DD_RUNTIME_METRICS_ENABLED=true para configurarlo.
c.runtime_metrics.enabled = true
# Opcionalmente, puedes configurar la instancia de DogStatsD utilizada para enviar las métricas de tiempo de ejecución.
# DogStatsD se configura automáticamente con la configuración automática si `dogstatsd-ruby` está disponible.
# Puedes configurar con el host y puerto del Datadog agent; por defecto 'localhost:8125'.
c.runtime_metrics.statsd = Datadog::Statsd.new
end
Las métricas de tiempo de ejecución se pueden ver en correlación con tus servicios de Ruby. Consulta el Catálogo de servicios en Datadog.
Por defecto, las métricas de tiempo de ejecución de tu aplicación se envían al Datadog Agent con DogStatsD en el puerto 8125
. Asegúrate de que DogStatsD está habilitado para el Agent.
Si estás ejecutando el Agent como un contenedor, asegúrate de que DD_DOGSTATSD_NON_LOCAL_TRAFFIC
está configurado como true y que el puerto 8125
está abierto en el Agent.
En Kubernetes, vincula el puerto de DogStatsD a un puerto host; en ECS, establece los indicadores apropiados en tu definición de tarea.
Alternativamente, el Agent puede ingerir métricas con un Unix Domain Socket (UDS) como alternativa al transporte UDP. Para más información, lee DogStatsD en Unix Domain Socket.
Datos recopilados
Las siguientes métricas se recopilan por defecto después de activar las métricas de tiempo de ejecución.
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 |
runtime.ruby.constant_cache_invalidations (gauge) | Constant cache invalidations Shown as resource |
runtime.ruby.constant_cache_misses (gauge) | Constant cache misses Shown as resource |
Además de mostrar estas métricas en tu Página de servicios de APM, Datadog proporciona un dashboard de tiempo de ejecución de Ruby predeterminado.
Leer más
Más enlaces, artículos y documentación útiles: