CodeGym /Cursos /Módulo 5. Spring /Lección 113: Configuración de Actuator a través de applic...

Lección 113: Configuración de Actuator a través de application.properties

Módulo 5. Spring
Nivel 19 , Lección 2
Disponible

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
Nota:

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.

Práctica:

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

  1. Habilita solo los endpoints /health, /info y /metrics.
  2. Cambia la ruta base de los endpoints a /monitoring.

Parte II: Gestión de acceso

  1. Configura el acceso a /health para todos los roles, y haz que /metrics esté cerrado para usuarios sin el rol ADMIN.
  2. Desactiva completamente el endpoint /env.

Parte III: Comprobación

  1. Usa Postman o el navegador para comprobar la disponibilidad de los endpoints.
  2. 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 /health y /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/health usa /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.

Enlaces útiles

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION