How to implement custom Health indicators in Spring Boot

Spring Boot provides the following HealthIndicator implementations out-of-the-box. They are auto-configured by default:

  • CassandraHealthIndicator
  • DiskSpaceHealthIndicator
  • DataSourceHealthIndicator
  • ElasticsearchHealthIndicator
  • JmsHealthIndicator
  • MailHealthIndicator
  • MongoHealthIndicator
  • RabbitHealthIndicator
  • RedisHealthIndicator
  • SolrHealthIndicator
package com.example.samplewebapp;

import org.springframework.boot.json.JsonParser;
import org.springframework.boot.json.JsonParserFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.Map;

public class RestHealthIndicator implements HealthIndicator {
  public Health health() {
    RestTemplate restTemplate = new RestTemplate();
    String url = "";
    try {
      String resp = restTemplate.getForObject(url, String.class);
      System.out.println("-------------->" + resp);
      JsonParser springParser = JsonParserFactory.getJsonParser();
      Map<String, Object> map = springParser.parseMap(resp);
      if ("delectus aut autem".equalsIgnoreCase((String) map.get("title"))) {
        return Health.up().build();
      } else {
        return Health.down()
            .withDetail("ping_url", url)
            .withDetail("ping_time", new Date())
    } catch (RestClientException e) {
      return Health.down(e).withDetail("ping_url", url).withDetail("ping_time", new Date()).build();

If we try to reach the Internet URL the following code JSON is returned:

{   "userId": 1,   "id": 1,   "title": "delectus aut autem",   "completed": false }

We have implemented the same logic in our Health indicator so that if you try to reach the “/actuator/health” URL, the health() callback is performed. This is a simple way to check if you are connected to Internet.

$ curl http://localhost:8080/actuator/health {"status":"UP"} 
Found the article helpful? if so please follow us on Socials
Twitter Icon       Facebook Icon       LinkedIn Icon       Mastodon Icon