Micrometer (마이크로미터)란 무엇인가
Micrometer는 애플리케이션의 메트릭을 수집하고 모니터링 시스템으로 전송하기 위한 라이브러리임.
Spring Boot에서 기본적으로 지원하는 메트릭 라이브러리로, 애플리케이션 성능 지표를 다양한 모니터링 시스템에 전송할 수 있도록 도와줌.
Prometheus, Datadog, New Relic, CloudWatch 등 다양한 모니터링 도구를 지원함.
1. Micrometer의 주요 특징
- 다양한 모니터링 시스템 지원
- Prometheus, CloudWatch, Datadog, Graphite 등 다양한 백엔드에 메트릭을 전송할 수 있음.
- Spring Boot 통합
- Spring Boot Actuator와 결합하여 애플리케이션의 메트릭을 자동으로 수집하고 노출할 수 있음.
- 경량 라이브러리
- 최소한의 의존성으로 애플리케이션에 부담을 주지 않으면서 메트릭을 수집할 수 있음.
- 다양한 메트릭 지원
- CPU 사용량, 메모리 사용량, GC(Garbage Collection), HTTP 요청 수, 응답 시간 등의 메트릭을 기본적으로 제공함.
- 커스텀 메트릭 생성
- 개발자가 원하는 메트릭을 자유롭게 생성하고 관리할 수 있음.
2. Micrometer의 동작 원리
Micrometer는 메트릭을 수집하고, 이를 등록된 모니터링 시스템으로 전송하는 중간 역할을 수행함.
Spring Boot에서 Micrometer를 사용하면 /actuator/metrics 엔드포인트를 통해 메트릭이 노출되며, Prometheus 같은 도구가 이를 수집해감.
Application → Micrometer → Metrics Registry → Monitoring System (Prometheus 등)
- Application
- 비즈니스 로직을 수행하면서 메트릭을 기록함.
- Micrometer
- 메트릭을 수집하여 Metrics Registry에 기록함.
- Metrics Registry
- 수집된 메트릭을 저장하고, 외부 시스템으로 전송할 준비를 함.
- Monitoring System
- Prometheus, CloudWatch 등이 메트릭을 수집하고 시각화하거나 알림을 설정함.
3. Micrometer의 Metrics Registry 종류
Micrometer는 다양한 백엔드 시스템에 대응하기 위해 다양한 Registry 구현체를 제공함.
Registry | 설명 |
PrometheusMeterRegistry | Prometheus용 Registry |
CloudWatchMeterRegistry | AWS CloudWatch용 Registry |
DatadogMeterRegistry | Datadog용 Registry |
GraphiteMeterRegistry | Graphite용 Registry |
SimpleMeterRegistry | 테스트 및 개발 환경용 간단한 Registry |
Spring Boot에서는 의존성 추가만으로 자동으로 등록됨.
4. Micrometer 기본 사용법
1) 의존성 추가
Spring Boot Actuator와 Prometheus Registry를 추가함.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
2) 메트릭 노출 엔드포인트 활성화
application.yml 또는 application.properties 에 설정함.
management:
endpoints:
web:
exposure:
include: health, info, metrics, prometheus
3) Custom 메트릭 생성
@Autowired
private MeterRegistry meterRegistry;
public void processOrder() {
meterRegistry.counter("order.process.count").increment();
}
위 코드는 order.process.count라는 카운터 메트릭을 생성하고, 주문 처리 시마다 값을 증가시킴.
5. Micrometer에서 제공하는 메트릭 종류
메트릭 종류 | 설명 |
Counter | 값이 계속 증가하는 메트릭 (예: 요청 수) |
Gauge | 현재 상태를 나타내는 메트릭 (예: 메모리 사용량) |
Timer | 이벤트 발생 시간 및 빈도를 측정하는 메트릭 (예: 요청 처리 시간) |
Distribution Summary | 값의 분포를 수집하는 메트릭 (예: 파일 크기 분포) |
Long Task Timer | 긴 시간 동안 실행되는 작업을 측정하는 메트릭 |
6. Micrometer의 장단점
장점 | 단점 |
다양한 모니터링 시스템 지원 | PromQL과 같은 쿼리는 외부 시스템에 의존해야 함 |
Spring Boot와의 강력한 통합성 | 메트릭 양이 많아지면 관리가 복잡해질 수 있음 |
커스텀 메트릭 생성이 쉬움 | 알림 기능은 Micrometer 자체에서 제공하지 않음 |
메트릭 자동 수집 | 배포 전 메트릭 설계가 부족하면 오히려 혼란스러울 수 있음 |
7. 실무 활용 사례
- 애플리케이션 성능 모니터링
- HTTP 요청 수, 응답 시간, 오류율을 측정하여 성능 개선에 활용함.
- 비즈니스 지표 모니터링
- 주문 처리 수, 결제 성공률 등의 비즈니스 핵심 지표를 메트릭으로 관리함.
- 시스템 리소스 모니터링
- JVM 메모리 사용량, GC 시간, CPU 사용량 등을 실시간으로 모니터링함.
- 배포 이후 모니터링
- 신규 기능 릴리즈 후 비정상적인 메트릭 상승 여부를 감지하여 빠르게 대응함.
정리
Micrometer는 Spring Boot에서 메트릭을 수집하고 다양한 모니터링 시스템으로 전송하는 데 사용되는 경량 라이브러리임.
Prometheus, CloudWatch 등 여러 시스템과 쉽게 연동할 수 있으며, 기본적으로 Actuator와 통합되어 애플리케이션의 상태를 쉽게 확인할 수 있게 도와줌.
특히 커스텀 메트릭을 통해 비즈니스 지표까지 통합 모니터링할 수 있다는 점이 큰 장점임.
출처 : ChatGPT