Actuator
Spring Actuator는 Spring Boot 애플리케이션의 상태와 동작을 모니터링하거나 관리할 수 있는 다양한 기능을 제공하는 서브 프로젝트입니다. 이를 통해 애플리케이션의 상태를 점검하고, 메트릭(metrics), 애플리케이션 설정, 사용 중인 스레드 정보 등을 노출하거나 조작할 수 있습니다.
주요 기능
- 모니터링 및 진단
- 애플리케이션의 상태(health)를 확인하고, 의존성, 데이터베이스, 메시징 시스템 등의 연결 상태를 검사합니다.
- 메모리 사용량, 활성 스레드 수, CPU 사용량 등 다양한 메트릭을 제공합니다.
- 엔드포인트 노출
- HTTP로 접근 가능한 RESTful 엔드포인트를 통해 애플리케이션의 상태 정보를 제공합니다.
- 기본적으로 /actuator 경로를 통해 엔드포인트를 접근합니다.
- 예: /actuator/health, /actuator/metrics
- 확장성
- 커스텀 엔드포인트를 정의하거나, 기본 엔드포인트를 확장할 수 있습니다.
- 추가적인 모니터링이나 제어 로직을 쉽게 통합할 수 있습니다.
- 서드파티 통합
- Prometheus, Grafana, ELK(Stack), Zipkin, Micrometer 등과 같은 모니터링/분석 도구와 손쉽게 연동할 수 있습니다.
주요 Actuator 엔드포인트

그 외 endpoint
https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
Endpoints :: Spring Boot
If you add a @Bean annotated with @Endpoint, any methods annotated with @ReadOperation, @WriteOperation, or @DeleteOperation are automatically exposed over JMX and, in a web application, over HTTP as well. Endpoints can be exposed over HTTP by using Jersey
docs.spring.io
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// Spring Boot Actuator (JMX 지원 포함)
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// https://mvnrepository.com/artifact/org.jolokia/jolokia-core
implementation group: 'org.jolokia', name: 'jolokia-core', version: '1.7.2'
implementation group: 'org.jolokia', name: 'jolokia-support-spring', version: '2.1.2'
}
application.properties
spring.jmx.enabled=true
# Actuator의 Jolokia 엔드포인트 활성화
management.endpoints.web.exposure.include=health,info,jolokia
management.endpoint.health.show-details=always
management.endpoint.jolokia.enabled=true
JVMMonitoringService.java
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.ThreadMXBean;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.stereotype.Component;
@Component
@ManagedResource(objectName = "com.example.mxbean.jolokia:type=JVMMonitoringService", description = "Custom MBean for Monitoring")
public class JVMMonitoringService implements JVMMonitoringServiceMBean {
private final OperatingSystemMXBean osMXBean;
private final MemoryMXBean memoryMXBean;
private final ThreadMXBean threadMXBean;
public JVMMonitoringService() {
this.osMXBean = ManagementFactory.getOperatingSystemMXBean();
this.memoryMXBean = ManagementFactory.getMemoryMXBean();
this.threadMXBean = ManagementFactory.getThreadMXBean();
}
// 속성으로 정의
@ManagedAttribute(description = "System Load Average")
@Override
public double getSystemLoadAverage() {
return osMXBean.getSystemLoadAverage();
}
// 속성으로 정의
@ManagedAttribute(description = "Heap Memory Usage")
@Override
public long getHeapMemoryUsage() {
return memoryMXBean.getHeapMemoryUsage().getUsed();
}
// 속성으로 정의
@ManagedAttribute(description = "Thread Count")
@Override
public int getThreadCount() {
return threadMXBean.getThreadCount();
}
}
JVMMonitoringServiceMBean.java
public interface JVMMonitoringServiceMBean {
double getSystemLoadAverage();
long getHeapMemoryUsage();
int getThreadCount();
}
GET request
http://localhost:8080/actuator/jolokia/read/cohttp://m.example.mxbean.jolokia:type=JVMMonitoringService/HeapMemoryUsage
response

'WEB개발 > Spring' 카테고리의 다른 글
| unnamed module of loader org springframework boot loader launch launchedclassloader (0) | 2026.02.03 |
|---|---|
| [Spring] 주석3 (Annotation, DTO) (0) | 2026.01.15 |
| AOP @Cacheable @CacheEvict (0) | 2026.01.12 |
| @Transactional (Propagation) (0) | 2025.12.12 |
| [Spring] Request를 처리하는 주석 (Annotation) (0) | 2025.02.21 |