Actuator — Production Monitoring
Spring Boot Actuator PRODUCTION-READY features add karta hai — application ki HEALTH, METRICS, aur INFO ko HTTP endpoints ke through EXPOSE karta hai. /actuator/health application zinda hai ya nahi batata hai (aur database, disk space jaisi dependencies ki health bhi). /actuator/metrics CPU usage, memory, HTTP request counts jaisi cheezein deta hai.
Ye Kubernetes/Docker environments mein ESSENTIAL hai — liveness/readiness probes /actuator/health endpoint ko HIT karte hain, decide karne ke liye ki container HEALTHY hai ya RESTART chahiye.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
// Custom health indicator:
@Component
public class DatabaseHealthIndicator implements HealthIndicator {
public Health health() {
boolean dbUp = checkDatabaseConnection();
return dbUp ? Health.up().build() : Health.down().withDetail("reason", "DB unreachable").build();
}
}- /actuator/health = application/dependencies zinda hain ya nahi
- /actuator/metrics = CPU, memory, request counts
- Kubernetes liveness/readiness probes ke liye essential
Default mein, sirf /actuator/health aur /actuator/info endpoints EXPOSED hote hain (security ke liye). application.properties mein management.endpoints.web.exposure.include se ADDITIONAL endpoints (metrics, env, beans) explicitly expose karne padte hain.
# application.properties:
management.endpoints.web.exposure.include=health,info,metrics,env
management.endpoint.health.show-details=alwaysProduction mein, Actuator endpoints (jo internal app details reveal karte hain — env variables, beans list) PUBLIC INTERNET se accessible NAHI hone chahiye — Spring Security se restrict karo (sirf ADMIN role access kar sake), ya ALAG management port par expose karo (management.server.port).