Métricas HTTP Personalizadas en Spring Boot: Observabilidad en Profundidad

Instrumenta Micrometer en Spring Boot con un filtro que agrupa métricas por método HTTP y consumidor y las expone en Prometheus para gestionar capacidad, uso justo y SLOs.

jueves, 18 de septiembre de 2025 • 3 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Las APIs modernas suelen atender a múltiples clientes como aplicaciones móviles, servicios de partners y herramientas internas. Saber quién te llama y con qué frecuencia es crítico para planificación de capacidad, uso justo y facturación, y para alertas y cumplimiento de SLOs.

Resumen arquitectónico: un filtro de servlet en Spring Boot intercepta cada solicitud HTTP y registra métricas con Micrometer. Flujo: solicitud entra, filtro intercepta y contabiliza por método HTTP y cabecera de consumidor personalizada, luego el controlador procesa la petición y Micrometer exporta las métricas a tu backend de observabilidad.

Paso 1 Añadir Micrometer Spring Boot 3 y superiores incluye Micrometer cuando usas spring-boot-starter-actuator. Para Prometheus añade la dependencia micrometer-registry-prometheus y habilita los endpoints de actuator management.endpoints.web.exposure.include=health,metrics,prometheus.

Paso 2 Implementar el filtro La idea es crear un filtro tipo OncePerRequestFilter que haga: leer la cabecera CONSUMER.ID, normalizarla a un valor por defecto si no existe, construir una clave combinando método HTTP y consumer, y mantener un caché concurrente de objetos Counter en un ConcurrentHashMap. Si no existe el contador se crea con Counter.builder, se añaden tags method y consumer y se registra en el MeterRegistry. Finalmente se incrementa el contador y se continúa con chain.doFilter.

Puntos clave OncePerRequestFilter garantiza una ejecución por solicitud. ConcurrentHashMap y compute permiten una caché de contadores segura en concurrencia. Usar tags method y consumer hace cada contador único y consultable desde Prometheus, Datadog o CloudWatch.

Paso 3 Observar las métricas Ejecuta la aplicación y realiza unas cuantas peticiones curl por GET y POST por ejemplo curl -H CONSUMER.ID: mobile-app https://localhost:8080/api/... y luego visita https://localhost:8080/actuator/prometheus para ver las series. Ejemplos en la salida de Prometheus http_requests_total{method=GET,consumer=mobile-app} 42.0 http_requests_total{method=POST,consumer=partner-service} 5.0

Por qué no usar @Timed Aunque Micrometer ofrece @Timed para métodos de controlador, está orientado por endpoint y no agrupa automáticamente por una cabecera personalizada. Un filtro proporciona cobertura transversal para todas las solicitudes, incluidas recursos estáticos y páginas de error, y permite etiquetas dinámicas basadas en cualquier cabecera o atributo.

Consejos y mejoras para producción Controlar la cardinalidad de etiquetas porque muchos IDs únicos generan series temporales excesivas. Soluciones posibles: restringir IDs a un conjunto conocido o hashear/anonimizar los valores. Los contadores no se eliminan por sí solos así que considera una política de limpieza o registrar solo para consumidores conocidos y usar TTL o eviction en la caché. Para latencia y códigos de estado añade un Timer y etiquetas adicionales status y outcome. Exponer /actuator/prometheus solo al scraper de métricas y detrás de red o autenticación adecuada. Para testing usa MockMvc y verifica los contadores esperados.

Implementación práctica en menos de 50 líneas te da visibilidad en tiempo real por consumidor. Ya sea para depurar un pico repentino o preparar un lanzamiento, estas métricas son invaluables. No puedes mejorar lo que no mides. Empieza a medir hoy y tu yo del futuro te lo agradecerá.

Sobre Q2BSTUDIO Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Ofrecemos soluciones integrales que incluyen servicios de inteligencia de negocio y Power BI, automatización de procesos y desarrollo de agentes IA para empresas. Si buscas desarrollar una plataforma o una app empresarial a medida visita nuestra página de desarrollo de aplicaciones y software a medida y descubre cómo adaptamos la solución a tus necesidades. Para proyectos centrados en IA y estrategias de inteligencia artificial consulta nuestra oferta de servicios de inteligencia artificial.

Palabras clave incluidas para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Si necesitas ayuda para instrumentar Micrometer en tu arquitectura, diseñar políticas de etiquetas o integrar la observabilidad con Prometheus, Datadog o CloudWatch, en Q2BSTUDIO podemos ayudarte a diseñar e implantar la solución óptima para tu plataforma.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.