Configuración de custom dashboards en Lescopr para equipos de Ruby on Rails: Métricas de ActiveRecord y Sidekiq
¿Qué es un custom dashboard? Un custom dashboard es una vista personalizada que agrupa métricas específicas de tu aplicación, permitiendo observar en tiempo real indicadores críticos como latencia de consultas SQL o tiempo de procesamiento de trabajos en cola.
1. Preparación del entorno
1.1 Instalación de la gema Lescopr
- Abre tu terminal y agrega la gema al
Gemfile:gem "lescopr" - Ejecuta
bundle installpara instalarla. - Genera el archivo de configuración con:
rails generate lescopr:install - Reinicia el servidor Rails.
1.2 Configuración básica de Lescopr
- API Key: Obtén tu clave API en el panel de Lescopr y colócala en
config/lescopr.ymlbajoapi_key. - Entorno: Define
environment: productionpara evitar enviar datos de desarrollo. - Endpoint: Usa el endpoint por defecto
https://api.lescopr.com/collect.
Tip: Mantén la configuración fuera del control de versiones usando variables de entorno.
2. Definir métricas de ActiveRecord
2.1 Instrumentar consultas SQL
Lescopr incluye un middleware que captura automáticamente la duración de cada consulta. Añade lo siguiente a config/application.rb:
config.middleware.use Lescopr::Middleware::ActiveRecord
Esto enviará a Lescopr métricas como db.query.time y db.query.count.
2.2 Crear métricas personalizadas
Para métricas específicas, usa el cliente Ruby:
Lescopr.metric("activerecord.slow_queries").record(duration_ms) if duration_ms > 200
Con este código, solo se registran consultas que superen los 200 ms, reduciendo el ruido.
3. Monitorizar trabajos de Sidekiq
3.1 Añadir middleware de tracing
En config/initializers/sidekiq.rb registra el middleware:
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Lescopr::Middleware::Sidekiq
end
end
Este middleware envía métricas como sidekiq.job.latency y sidekiq.job.error_rate.
3.2 Exponer latencia y tasa de errores
Puedes crear un contador de errores personalizados:
begin
# procesamiento del job
rescue => e
Lescopr.metric("sidekiq.job.errors").increment
raise e
end
De esta forma, cada excepción incrementa la métrica y aparece en el dashboard.
4. Construir el custom dashboard
4.1 Seleccionar widgets
En el portal de Lescopr, crea un nuevo dashboard y añade los siguientes widgets:
- Gráfico de líneas:
db.query.time(promedio por minuto). - Barra de estado:
activerecord.slow_queries(conteo total). - Gauge:
sidekiq.job.latency(latencia media). - Tabla:
sidekiq.job.errors(últimos 20 errores).
4.2 Configurar filtros y alertas
- Añade un filtro por
environment = production. - Configura una alerta cuando
db.query.timesupere los 300 ms por 5 minutos consecutivos. - Configura otra alerta cuando
sidekiq.job.error_rateexceda el 5 %.
Nota: Las alertas pueden enviarse por Slack o email usando los canales de notificación de Lescopr.
5. Validar y ajustar
5.1 Analizar resultados iniciales
Una vez desplegado, observa los paneles durante al menos 24 horas. Busca patrones como picos de latencia coincidentes con aumentos de carga.
5.2 Optimizar consultas y reintentos
- ActiveRecord: Refactoriza consultas N+1 usando
includesopreload. - Sidekiq: Ajusta la concurrencia y el número de retries en
sidekiq.yml. - Dashboard: Añade filtros de tiempo para comparar periodos de alta y baja carga.
6. Próximos pasos
Para profundizar, la documentación de Lescopr detalla la implementación paso a paso. Además, puedes explorar la guía de integración de Ruby on Rails para descubrir funcionalidades avanzadas como tracing distribuido y exportación de logs.
CTA: Si buscas una visión clara y medible de la salud de tu stack Rails, prueba Lescopr hoy mismo y comienza a construir dashboards que realmente sirvan a tu equipo.