❤️
Actuator & Observability

Custom Health Indicators

Kubernetes Liveness & Readiness
💡 Health Indicators ek DOCTOR'S CHECKUP hai — SIRF "HEARTBEAT hai ya nahi" (application ZINDA hai) CHECK karna KAAFI NAHI, "BLOOD PRESSURE" (database CONNECTED?), "OXYGEN LEVEL" (EXTERNAL API REACHABLE?) — HAR CRITICAL DEPENDENCY ka SEPARATE CHECK zaroori hai, POORI HEALTH PICTURE ke liye.

HealthIndicator INTERFACE IMPLEMENT karके, CUSTOM HEALTH CHECKS ADD kiye ja sakte hain — jaise DATABASE CONNECTIVITY, EXTERNAL API REACHABILITY, DISK SPACE. Spring Boot AUTOMATICALLY, DEFAULT mein bhi, KUCH health checks PROVIDE karta hai (jaise DataSource, DiskSpace, agar RELEVANT dependencies classpath par hain).

AGAR MULTIPLE HealthIndicators DEFINE ki jaayein, /actuator/health endpoint AUTOMATICALLY SAB ko AGGREGATE karta hai — WORST-CASE APPROACH follow hota hai — AGAR EK BHI COMPONENT "DOWN" hai, OVERALL APPLICATION STATUS BHI "DOWN" DIKHTA hai.

@Component
public class ExternalApiHealthIndicator implements HealthIndicator {
    private final RestTemplate restTemplate;

    public Health health() {
        try {
            restTemplate.getForEntity("https://payment-api.example.com/ping", String.class);
            return Health.up().build();
        } catch (Exception ex) {
            return Health.down()
                .withDetail("reason", "Payment API unreachable")
                .withException(ex)
                .build();
        }
    }
}

// GET /actuator/health response:
// { "status": "DOWN", "components": { "externalApi": { "status": "DOWN", "details": {...} } } }
❤️
Health Indicators ek DOCTOR'S CHECKUP hai — SIRF "HEARTBEAT hai ya nahi" (application ZINDA hai) CHECK karna KAAFI NAHI, "BLOOD PRESSURE" (database CONNECTED?), "OXYGEN LEVEL" (EXTERNAL API REACHABLE?) — HAR CRITICAL DEPENDENCY ka SEPARATE CHECK zaroori hai, POORI HEALTH PICTURE ke liye.
1 / 2
⚡ Quick Recap
  • HealthIndicator interface = CUSTOM health checks (database, external APIs, disk)
  • Multiple indicators AUTOMATICALLY AGGREGATE hote hain — WORST-CASE approach
  • Liveness (restart trigger) vs Readiness (traffic routing) — Kubernetes ke liye ALAG concerns
On this page (2 subtopics)

AGAR MULTIPLE HealthIndicators DEFINE ki jaayein (database, external API, disk space), /actuator/health endpoint AUTOMATICALLY SAB ko AGGREGATE karta hai — AGAR EK BHI DOWN hai, OVERALL STATUS "DOWN" ho jaata hai (WORST-CASE aggregation).

@Component
public class ExternalApiHealthIndicator implements HealthIndicator {
    public Health health() {
        boolean apiReachable = pingExternalApi();
        return apiReachable ? Health.up().build()
            : Health.down().withDetail("reason", "External API unreachable").build();
    }
}

Kubernetes DO ALAG TYPES ke health checks DISTINGUISH karta hai — LIVENESS ("application ZINDA hai ya nahi, agar NAHI to RESTART karo") aur READINESS ("application TRAFFIC receive karne ke liye READY hai ya nahi"). Spring Boot Actuator, /actuator/health/liveness aur /actuator/health/readiness — DONO SEPARATELY EXPOSE karta hai.

  • Liveness FAIL → Kubernetes CONTAINER ko RESTART kar deta hai
  • Readiness FAIL → Kubernetes TRAFFIC ROUTE karna ROK deta hai (RESTART nahi karta)