Spring Boot Actuator's health system can be extended with custom HealthIndicator implementations to report on application-specific dependencies, giving monitoring tools detailed, meaningful signals beyond the generic built-in checks.
Key Points: • Implement the HealthIndicator interface, returning Health.up() or Health.down() with optional detail attributes. • Register the custom indicator as a Spring bean so Actuator automatically picks it up and includes it under /actuator/health. • Set management.endpoint.health.show-details=always to expose the full breakdown instead of just an aggregate status. • Combine multiple indicators, such as database connectivity and downstream API availability, to get a composite view of application health. • Group related indicators with health groups to separate readiness, liveness, and general health concerns for orchestrators like Kubernetes.
Example: A custom PaymentGatewayHealthIndicator pings the third-party payment provider and reports DOWN with a "reason" detail if it's unreachable, so the monitoring dashboard immediately flags the actual root cause instead of a generic failure.
Code Example:
@Component
public class PaymentGatewayHealthIndicator implements HealthIndicator {
@Override
public Health health() {
if (paymentClient.isReachable()) {
return Health.up().build();
}
return Health.down().withDetail("reason", "Payment gateway unreachable").build();
}
}Interview Tip: A concise interview answer is:
"I'd implement custom HealthIndicator beans for the things that actually matter to the app, like database and downstream API connectivity, register them as Spring beans, and set show-details to always so the health endpoint gives operators real diagnostic detail instead of a generic up or down status."