Por defecto Spring Boot Actuator proporciona muchos datos útiles. Sin embargo, eso no significa que todo deba estar siempre disponible en la interfaz externa. Cuantos más datos muestres, más riesgos hay — porque un hacker "amigable", viendo /env, puede enterarse de mucho más de lo que te gustaría. Por eso es importante configurar el acceso, la visibilidad e incluso los propios endpoints de Actuator. Aquí entra en juego el archivo de configuración application.properties o su análogo YAML application.yml.
Configuración de endpoints de Actuator
Activando Actuator en el proyecto
Si se te olvidó cómo añadir Actuator, te recuerdo: basta con añadir la dependencia en tu pom.xml (Maven) o build.gradle (Gradle).
Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Gradle:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
Habilitar/deshabilitar endpoints
Spring Boot Actuator proporciona muchos endpoints estándar, por ejemplo /health, /metrics, /env, /loggers, etc. Muchos de ellos están habilitados por defecto, pero si quieres activar o desactivar endpoints concretos, puedes hacerlo desde application.properties.
Ejemplo de configuración que incluye solo los endpoints /health y /metrics:
management.endpoints.web.exposure.include=health,metrics
O, al contrario, excluir algunos endpoints:
management.endpoints.web.exposure.exclude=env,beans
Si no especificas ningún endpoint, por defecto solo se habilitan /health y /info.
Ocultar o mostrar todos los endpoints Si quieres ocultar TODOS los endpoints y elegir solo los que necesitas:
management.endpoints.web.exposure.include=none
Y añades manualmente los que necesites:
management.endpoints.web.exposure.include=health,info
Cambiar la ruta base de los endpoints
Por defecto los endpoints de Actuator están disponibles en /actuator. Sin embargo, a veces puede interesarte cambiarlo: por seguridad o simplemente por estética.
Puedes cambiar la ruta base con la siguiente configuración:
management.endpoints.web.base-path=/monitoring
Ahora, en lugar de /actuator/health, tu endpoint de comprobación estará disponible en /monitoring/health.
Prueba a cambiar la ruta base en tu proyecto de práctica y comprueba la disponibilidad de los endpoints con Postman o el navegador.
Configuración de acceso y seguridad
La mayoría de endpoints de Actuator están accesibles por defecto para todos (excepto /shutdown, que viene deshabilitado). Pero en aplicaciones reales es mejor limitar el acceso a métricas y configuraciones, para que actores malintencionados no aprovechen esa información.
Para empezar, activa Spring Security si aún no lo has añadido: Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Gradle:
implementation 'org.springframework.boot:spring-boot-starter-security'
Ahora, para controlar el acceso a los endpoints:
management.endpoint.health.roles=ADMIN,USER
management.endpoint.metrics.roles=ADMIN
Aquí indicamos que /health pueden acceder usuarios con roles ADMIN o USER, y que las métricas /metrics solo están disponibles para ADMIN.
Desactivar endpoints
Si no necesitas un endpoint, puedes desactivarlo por completo:
management.endpoint.env.enabled=false
Ahora el endpoint /env desaparecerá completamente de la aplicación.
Ajustes adicionales
Si necesitas más detalle para depurar, puedes configurar niveles de logging adicionales para los endpoints de Actuator.
Añade la siguiente línea en tu application.properties:
logging.level.org.springframework.boot.actuate=DEBUG
Ahora Actuator imprimirá más información en la consola, lo cual puede ser útil para analizar problemas.
Configuración de métricas custom (básico)
Las métricas custom sirven para monitorizar aspectos específicos de tu aplicación. Por ejemplo, quieres ver el número de usuarios activos o la frecuencia de ejecución de cierta operación de negocio. Lo veremos en detalle en próximas lecciones, pero para empezar puedes configurar etiquetas básicas vía Actuator.
Ejemplo de configuración de una métrica custom en application.properties
management.metrics.tags.application=MyApplication
Esta etiqueta añade la métrica custom application, que se asociará a todas tus métricas. Por ejemplo, en /metrics empezarás a ver valores con la etiqueta application=MyApplication.
Ejercicio práctico
Parte I: Configurar endpoints
- Habilita solo los endpoints
/health,/infoy/metrics. - Cambia la ruta base de los endpoints a
/monitoring.
Parte II: Gestión de acceso
- Configura el acceso a
/healthpara todos los roles, y haz que/metricsesté cerrado para usuarios sin el rolADMIN. - Desactiva completamente el endpoint
/env.
Parte III: Comprobación
- Usa Postman o el navegador para comprobar la disponibilidad de los endpoints.
- Intenta enviar peticiones sin autenticación y verifica qué endpoints están accesibles.
Errores comunes
En la práctica son comunes los siguientes errores:
- "¿Por qué no se habilitan los endpoints que necesito?" Revisa la configuración
management.endpoints.web.exposure.include. Si no indicas nada, Spring Boot habilita solo/healthy/info. - "Endpoints inaccesibles tras cambiar la ruta base." Si cambiaste la ruta base, asegúrate de usar el nuevo prefijo. Por ejemplo, en vez de
/actuator/healthusa/monitoring/health. - "Endpoints sin proteger." Si olvidaste añadir Spring Security o configurar roles, esto puede llevar a una fuga de información. Revisa la configuración
management.endpoint.<name>.roles.
GO TO FULL VERSION