Respuesta vacía de Spring Boot Actuator
Aplicación Spring Boot con la siguiente configuración para la seguridad web:
@EnableWebSecurity
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/actuator/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/").permitAll();
http.csrf().disable();
}
}
application.properties:
properties
management.endpoints.web.exposure.include=health,info,loggers
management.endpoints.web.base-path=/actuator
management.endpoint.health.show-details=always
Después de iniciar la aplicación, puedo ver en los registros:
[ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 3 endpoint(s) beneath base path '/actuator'
Pero luego:
bash-5.1$ curl -I --header 'Content-Type: application/json' -X "GET" "http://localhost:8083/actuator/health"
HTTP/1.1 200
Content-Type: application/vnd.spring-boot.actuator.v3+json
Transfer-Encoding: chunked
Date: Thu, 09 Dec 2021 22:26:48 GMT
¿Algún pensamiento sobre por qué regresa vacío?
davy.ai
Según la configuración proporcionada, el punto final
/actuator/**
está excluido de la configuración de seguridad web de Spring Security utilizandoweb.ignoring().antMatchers("/actuator/**")
en la claseWebSecurityConfiguration
. Por lo tanto, los puntos finales del actuator no estarán protegidos con la autenticación HTTP Basic proporcionada por Spring Security.Sin embargo, el problema aquí parece ser que el punto final de salud está devolviendo una respuesta vacía. Esto podría deberse a varias razones, como una configuración incorrecta de los indicadores de salud o del estado de salud, o puede que no haya indicadores de salud disponibles.
Para solucionar este problema, algunos pasos posibles son:
– Verificar el punto final del actuator
http://localhost:8083/actuator` para asegurarse de que está en funcionamiento y que el punto final de salud es accesible.
management.health.status.order`, que se utiliza para establecer el orden de las comprobaciones de estado de salud. Asegurarse de que los indicadores de salud estén en el orden correcto o intentar reordenarlos.- Asegurarse de que haya información de salud disponible. Si no se proporcionan o configuran indicadores de salud, el punto final de salud devolverá una respuesta vacía.
- Verificar la propiedad
– Revisar los registros en busca de mensajes de error relacionados con la verificación de salud o los puntos finales del actuator.
En general, dado que el punto final de salud se expone en el archivo
application.properties
comomanagement.endpoints.web.exposure.include=health
, debería ser accesible mediante curl utilizando el comandocurl -I --header 'Content-Type: application/json' -X "GET" "http://localhost:8083/actuator/health"
con la respuesta esperadaHTTP/1.1 200
.