Saltar al contenido principal

Analytics y Monitoreo

Sistema completo de captura, almacenamiento y análisis de métricas que proporciona visibilidad en tiempo real del uso de la plataforma y performance de endpoints.


Analytics Sin Impacto

El sistema de analytics está diseñado para capturar métricas sin impactar el performance de los endpoints. Todo el procesamiento y almacenamiento se realiza de forma asíncrona después de enviar la respuesta al cliente.


Componentes del Sistema

Dashboard Analytics

Sistema principal de métricas y estadísticas:

Métricas Capturadas

Por Endpoint:

  • Total de requests procesados
  • Tiempo promedio de respuesta
  • Requests por método HTTP (GET, POST, PUT, DELETE)
  • Tasa de errores (4xx, 5xx)
  • Distribución horaria de tráfico

Por Usuario:

  • Actividad total del usuario
  • Endpoints más utilizados
  • Patrones de uso por día/hora
  • Sesiones activas y dispositivos
  • Historial de navegación

Globales:

  • Total de requests en el sistema
  • Performance general de la plataforma
  • Usuarios activos por período
  • Picos de tráfico y carga
  • Tendencias de crecimiento

Dashboard Analytics Service

Servicio que proporciona:

  • getEndpointStats(endpoint, period) – Estadísticas de un endpoint
  • getUserAnalytics(userId, period) – Analytics de usuario específico
  • getGlobalStats(period) – Estadísticas globales
  • getTopEndpoints(limit) – Endpoints más utilizados
  • getSlowEndpoints(threshold) – Endpoints con performance bajo umbral

Analytics Interceptor

Interceptor que captura métricas automáticamente:

Proceso de Captura

  1. Antes del request – Registra timestamp de inicio
  2. Procesamiento – El request se procesa normalmente
  3. Después del request – Calcula duración y captura datos
  4. Almacenamiento asíncrono – Guarda métricas sin bloquear respuesta

Datos Capturados

  • Endpoint y método HTTP
  • Usuario autenticado (si aplica)
  • Tiempo de respuesta en milisegundos
  • Código de estado HTTP
  • Tamaño de respuesta
  • IP del cliente
  • User agent
  • Timestamp preciso

Captura Transparente

El interceptor es completamente transparente para los controladores. No requiere configuración adicional y se aplica automáticamente a todos los endpoints configurados sin modificar su lógica.


Analytics Middleware

Middleware para captura a nivel de aplicación:

Funcionalidades

  • Captura global – Aplica a todos los requests sin excepción
  • Filtrado inteligente – Excluye health checks y assets estáticos
  • Agregación en memoria – Acumula métricas antes de persistir
  • Flush periódico – Escribe a base de datos cada N segundos

Optimizaciones

  • Buffer en memoria para reducir writes
  • Batch inserts para eficiencia
  • Índices optimizados en MongoDB
  • TTL automático para datos antiguos

Schemas de Analytics

EndpointStats Schema

Estadísticas agregadas por endpoint:

  • endpoint – Ruta del endpoint
  • method – Método HTTP
  • totalRequests – Total de requests
  • avgResponseTime – Tiempo promedio de respuesta
  • minResponseTime – Respuesta más rápida
  • maxResponseTime – Respuesta más lenta
  • errorCount – Número de errores
  • successCount – Número de éxitos
  • period – Período de agregación (hora, día, mes)
  • timestamp – Momento de la agregación

SystemMetrics Schema

Métricas del sistema:

  • cpuUsage – Uso de CPU en porcentaje
  • memoryUsage – Uso de memoria
  • diskUsage – Uso de disco
  • activeConnections – Conexiones activas
  • queueSize – Tamaño de colas de procesamiento
  • timestamp – Momento de captura

MonthlyRegistration Schema

Registros mensuales agregados:

  • year – Año
  • month – Mes
  • totalRegistrations – Total de registros
  • verifiedUsers – Usuarios que completaron verificación
  • activeUsers – Usuarios con actividad en el mes
  • averageAge – Edad promedio de usuarios

Dashboard Analytics Controller

Controlador para acceso a analytics:

Endpoints Disponibles

Estadísticas Generales:

  • GET /analytics/dashboard – Dashboard completo con métricas principales
  • GET /analytics/summary – Resumen ejecutivo de estadísticas
  • GET /analytics/trends – Tendencias y proyecciones

Por Endpoint:

  • GET /analytics/endpoints – Lista de todos los endpoints con stats
  • GET /analytics/endpoints/:path – Estadísticas detalladas de un endpoint
  • GET /analytics/endpoints/slow – Endpoints con performance bajo umbral

Por Usuario:

  • GET /analytics/users/:id – Analytics de usuario específico
  • GET /analytics/users/active – Usuarios más activos
  • GET /analytics/users/growth – Crecimiento de base de usuarios

Sistema:

  • GET /analytics/system/health – Métricas de salud del sistema
  • GET /analytics/system/performance – Performance histórica
  • GET /analytics/system/errors – Análisis de errores

Cleanup y Retención

Analytics Cleanup Task

Tarea programada de mantenimiento de datos:

Operaciones Automáticas

Agregación:

  • Agrupa datos horarios en diarios (después de 7 días)
  • Agrupa datos diarios en mensuales (después de 90 días)
  • Mantiene métricas mensuales indefinidamente

Limpieza:

  • Elimina datos raw después de período configurado
  • Mantiene agregados para análisis histórico
  • Optimiza índices periódicamente

Retención:

  • Raw data: 7 días
  • Agregados horarios: 90 días
  • Agregados diarios: 1 año
  • Agregados mensuales: Indefinido

Programación

  • Ejecuta diariamente a las 3 AM
  • Procesa en lotes para no impactar performance
  • Logging detallado de operaciones
  • Notificación de problemas detectados

Integración con Dashboard

El módulo de analytics alimenta dashboards visuales que muestran:

Gráficos en Tiempo Real

  • Línea de tiempo – Requests por minuto/hora
  • Heatmap – Actividad por día de semana y hora
  • Barras – Top endpoints por uso
  • Pastel – Distribución de métodos HTTP
  • Área – Tendencia de usuarios activos

Métricas Clave (KPIs)

  • Total de requests (último período)
  • Tiempo promedio de respuesta
  • Tasa de error
  • Usuarios activos
  • Growth rate

Alertas Configurables

  • Performance degradada en endpoint específico
  • Incremento anormal de tráfico
  • Tasa de error elevada
  • Recursos del sistema saturados

Analytics Accionables

Los analytics no son solo para ver datos históricos, sino para tomar decisiones:

  • Identificar endpoints que necesitan optimización
  • Detectar patrones de uso para mejor UX
  • Planificar escalamiento basado en tendencias
  • Identificar y resolver cuellos de botella
  • Validar impacto de cambios desplegados