From 850ace5f5e34bc2747aa82546837abdc286cec6a Mon Sep 17 00:00:00 2001 From: Mona Mohamadinia Date: Fri, 14 Aug 2020 03:02:52 +0430 Subject: [PATCH] Custom Health Indicators in Spring Boot --- .../baeldung/health/HealthApplication.java | 12 ++++++++ .../health/RandomHealthIndicator.java | 28 +++++++++++++++++++ .../src/main/resources/application.properties | 6 +++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java create mode 100644 spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java new file mode 100644 index 0000000000..af1f35b29f --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/HealthApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.health; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HealthApplication { + + public static void main(String[] args) { + SpringApplication.run(HealthApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java new file mode 100644 index 0000000000..958f173458 --- /dev/null +++ b/spring-boot-modules/spring-boot-actuator/src/main/java/com/baeldung/health/RandomHealthIndicator.java @@ -0,0 +1,28 @@ +package com.baeldung.health; + +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; + +@Component +public class RandomHealthIndicator implements HealthIndicator { + + @Override + public Health health() { + double chance = ThreadLocalRandom.current().nextDouble(); + Health.Builder status = Health.up(); + if (chance > 0.9) { + status = Health.down(new RuntimeException("Bad Luck")); + } + + Map details = new HashMap<>(); + details.put("chance", chance); + details.put("strategy", "thread-local"); + + return status.withDetails(details).build(); + } +} diff --git a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties index 8c706a9b1d..290221b731 100644 --- a/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties +++ b/spring-boot-modules/spring-boot-actuator/src/main/resources/application.properties @@ -1 +1,5 @@ -management.health.probes.enabled=true \ No newline at end of file +management.health.probes.enabled=true +management.endpoint.health.show-details=always +management.health.random.enabled=false +management.endpoint.health.status.http-mapping.down=500 +management.endpoint.health.status.http-mapping.out_of_service=503 \ No newline at end of file