Spring Boot Actuator empty response

Viewed 496

Spring Boot app with just below configuration for web security:

@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.properites:

management.endpoints.web.exposure.include=health,info,loggers
management.endpoints.web.base-path=/actuator
management.endpoint.health.show-details=always

After starting the app I can see in the logs:

[ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 3 endpoint(s) beneath base path '/actuator'

but then:

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

Any thoughts on why it coming back empty?

2 Answers

Because:

curl --help all

...says:

...
 -I, --head               Show document info only
...

;)


So with:

curl --header 'Content-Type: application/json' -X "GET" "http://localhost:8083/actuator/health"

(omitting -I) we get the expected:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   171    0   171    0     0  32540      0 --:--:-- --:--:-- --:--:-- 42750
{"status":"UP","components":{"diskSpace":{"status":"UP","details":{"total":1991571578880,"free":1684774006784,"threshold":10485760,"exists":true}},"ping":{"status":"UP"}}}

Latest spring boot requires two things to be set up:

1- exposing the endpoint in application.properties file:

management.endpoints.web.exposure.include=info, health

You can use a wildcard and expose all endpoints if you want

management.endpoints.web.exposure.include=*

2- enabling info.env in application.properties:

management.info.env.enabled=true

You can set custom info properties:

info.app.name=Project
info.app.description=A dummy project
info.app.version=1.0.0
Related