Spring Boot Actuator provides production-ready monitoring and management features for a Spring Boot application.
| Question | Actuator Endpoint |
|---|---|
| Is the application running? | /health |
| What beans are loaded? | /beans |
| What environment variables exist? | /env |
| What metrics are available? | /metrics |
| What threads are running? | /threaddump |
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
implementation 'org.springframework.boot:spring-boot-starter-actuator'
/actuator/health /actuator/info
http://localhost:8080/actuator/health
{
"status": "UP"
}
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.include=health,info,beans,metrics
| Endpoint | Description |
|---|---|
| /health | Application health status |
| /info | Application information |
| /metrics | Application metrics |
| /beans | Spring beans in application |
| /env | Environment properties |
| /loggers | Logger configuration |
| /threaddump | Thread dump |
| /heapdump | JVM heap dump |
| /mappings | All request mappings |
/actuator/health
{
"status": "UP",
"components": {
"db": { "status": "UP" },
"diskSpace": { "status": "UP" }
}
}
management.endpoint.health.show-details=always
info.app.name=Spring Boot Application info.app.version=1.0 info.app.description=Learning Spring Boot Actuator
/actuator/info
/actuator/metrics
/actuator/beans
/actuator/env
/actuator/loggers
Spring Boot Application
|
Actuator Module
|
Management Endpoints
|
Health Metrics Info
|
Monitoring Tools (Prometheus, Grafana)
management.endpoints.web.exposure.include=health,info
management.endpoints.web.base-path=/manage
/manage/health /manage/metrics
management.server.port=9090
Spring Boot App
|
Spring Boot Actuator
|
Micrometer Metrics
|
Prometheus
|
Grafana Dashboard
Spring Boot allows developers to create custom actuator endpoints to expose custom application information.
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;
@Component
@Endpoint(id = "customInfo")
public class CustomActuatorEndpoint {
@ReadOperation
public String customData() {
return "This is a custom actuator endpoint";
}
}
management.endpoints.web.exposure.include=*
http://localhost:8080/actuator/customInfo
This is a custom actuator endpoint