Infra

Micrometer

baek-dev 2025. 4. 10. 20:27

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

'Infra' 카테고리의 다른 글

LAMP 스택  (0) 2025.05.01
K6 부하 테스트  (0) 2025.04.25
Prometheus  (0) 2025.04.09
Grafana  (0) 2025.04.08
리버스 프록시  (1) 2025.04.03