𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗲𝗼 𝗲𝗻 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁

Una aplicación en producción debe hacer algo más que simplemente ejecutarse. Debe ser observable y fácil de reparar cuando falla. Necesitas controles de salud (health checks), métricas, registros (logs) y procedimientos claros para gestionar incidentes.

Spring Boot utiliza Actuator para proporcionar estas funcionalidades. Actuator te ofrece endpoints como health, metrics e info. Puedes exponerlos a través de HTTP o JMX.

Áreas clave para monitorear:

• Disponibilidad: Comprobar el tiempo de actividad (uptime), la preparación (readiness) y la vitalidad (liveness). • Rendimiento: Rastrear los tiempos de respuesta, la latencia y el rendimiento (throughput). • Errores: Vigilar los errores HTTP 4xx/5xx y los mensajes fallidos. • JVM: Monitorear el heap, la memoria, la CPU y los hilos (threads). • Base de datos: Rastrear los pools de conexiones y las consultas lentas. • Kafka: Monitorear el retraso del consumidor (consumer lag) y las tasas de reintento.

Recolección de métricas

Spring Boot utiliza Micrometer para recolectar métricas. Puedes usar el registro de Prometheus para exponer estas métricas. Una configuración común implica:

Spring Boot App → Prometheus → Grafana

Esto te permite visualizar los datos de la aplicación en tableros (dashboards).

Mejores prácticas de logging

Los logs te ayudan a entender qué sucedió durante un fallo. Utiliza logging JSON estructurado en producción para que los logs sean legibles por máquinas.

Qué hacer:

Qué no hacer:

Estabilidad operativa

El soporte operativo significa mantener el servicio estable después de desplegarlo. Debes enfocarte en:

Un servicio de Spring Boot sólido es fácil de monitorear, fácil de depurar y fácil de recuperar.

Fuente: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220