Microservices Architecture / / 2024. 12. 9. 10:30

Actuator와 Micrometer

Actuator와 Micrometer란 무엇인가?

ActuatorMicrometer는 주로 스프링(Spring) 기반 애플리케이션 개발 시 애플리케이션 내부 상태 파악, 모니터링, 메트릭 수집 및 노출에 활용되는 라이브러리와 프레임워크입니다. 이를 통해 개발자나 운영팀은 애플리케이션 성능, 상태, 동작을 관찰하고 운영 환경에서 발생하는 문제를 더 빠르게 식별하여 대응할 수 있습니다.


Spring Boot Actuator

Actuator는 스프링 부트(Spring Boot) 애플리케이션의 상태와 내부 정보를 손쉽게 노출하고 관리하기 위한 엔드포인트(Endpoint)를 제공하는 모듈입니다. 애플리케이션에 Actuator를 추가하면, HTTP 엔드포인트를 통해 애플리케이션의 헬스 체크, 환경 변수, 설정 값, 로그 설정, 스레드 덤프, 메트릭, 트레이스 정보 등을 확인할 수 있습니다.

주요 특징

  1. 다양한 내장 엔드포인트 제공:

    • /actuator/health: 애플리케이션의 현재 상태(헬스 상태)를 노출
    • /actuator/info: 애플리케이션 정보(버전, 이름 등) 노출
    • /actuator/metrics: JVM 및 시스템, 애플리케이션 관련 메트릭 노출
    • /actuator/env: 현재 실행 중인 애플리케이션의 환경 정보 노출
    • /actuator/logfile: 로그 파일 접근
  2. 보안 및 접근 제어:
    운영 환경에서는 이러한 정보가 민감할 수 있으므로, 보안 설정을 통해 접근 제한 및 인증을 걸 수 있습니다. 필요한 엔드포인트만 노출하거나, 요청 인증을 거쳐 접근하도록 설정이 가능합니다.

  3. 커스터마이징 가능:
    Actuator 엔드포인트를 확장하거나 커스터마이즈하여, 사용자 정의 상태 정보나 진단 정보를 노출할 수 있습니다.


Micrometer

Micrometer는 JVM 기반 애플리케이션의 메트릭을 수집하고, 다양한 모니터링 시스템(Prometheus, Graphite, InfluxDB, New Relic, Datadog 등)에 통합하기 위한 범용 메트릭 계층(library)입니다. 즉, Micrometer는 애플리케이션 내부에서 발생하는 이벤트, 성능, 자원 사용량 등을 표준화된 방식으로 측정하고, 이를 외부 모니터링 플랫폼과 연계하는 통로 역할을 합니다.

주요 특징

  1. 애플리케이션 메트릭 추상화 계층:
    Micrometer는 특정 모니터링 백엔드(예: Prometheus)와 직접 결합되지 않고, 추상화된 계층을 제공합니다. 이를 통해 코드 변경 없이 모니터링 시스템을 교체하거나 추가할 수 있습니다.

  2. 다양한 메트릭 타입 지원:

    • Counter(카운터): 단조롭게 증가하는 값 (예: 요청 수)
    • Gauge(게이지): 시시각각 변화하는 값 (예: 현재 메모리 사용량)
    • Timer(타이머): 특정 코드 블록 실행 시간 및 호출 횟수
    • DistributionSummary(분포 요약): 값의 분포(최소/최대/평균/도분위수 등)에 관한 통계
  3. Spring Boot Actuator와 통합:
    Spring Boot 2.x부터 Actuator는 기본 메트릭 수집에 Micrometer를 사용합니다. 이를 통해 Actuator의 /actuator/metrics 엔드포인트는 Micrometer를 통해 수집한 메트릭을 표시하며, Micrometer를 사용해 Prometheus 등 외부 시스템과 쉽게 연동할 수 있습니다.

  4. 자동화된 계측(Instrumentation):
    Spring Boot, JDBC, HTTP 클라이언트, Kafka 등 다양한 Spring 생태계 컴포넌트나 서드파티 라이브러리에 대한 자동 메트릭 수집을 지원합니다. 이를 통해 별도 코드 작성 없이도 주요 지표들을 손쉽게 모니터링할 수 있습니다.


Actuator와 Micrometer의 관계

  • Actuator는 애플리케이션 내부 정보를 엔드포인트로 노출하는 관리용 툴이며, 내부적으로 메트릭 수집을 Micrometer를 통해 수행합니다.
  • Micrometer는 메트릭 수집 및 포맷팅 담당, Actuator는 이 메트릭을 HTTP 엔드포인트로 노출하는 인터페이스를 제공합니다.
  • Actuator를 사용하면 /actuator/metrics 엔드포인트로 Micrometer가 수집한 다양한 메트릭을 쉽게 조회할 수 있습니다.
  • Micrometer를 통해 Prometheus, Graphite, CloudWatch 등 다양한 모니터링 시스템과 연동하면, Actuator 엔드포인트 정보뿐 아니라 Micrometer로 계측한 모든 메트릭을 모니터링 툴에서 시각화하고 알람을 설정할 수 있습니다.

활용 예시

  1. 프로덕션 환경 헬스체크:
    /actuator/health 엔드포인트를 사용해 Kubernetes liveness/readiness probe 또는 로드밸런서 헬스 체크로 활용할 수 있습니다.

  2. 애플리케이션 성능 모니터링:
    Micrometer를 통해 쿼리 응답 시간, HTTP 요청 처리 시간, 메모리/CPU 사용량 등을 Prometheus-Grafana 대시보드로 전송해 실시간 모니터링 가능.

  3. 이상 징후 조기 파악:
    Micrometer로 수집한 GC 시간, 스레드 수, 큐 길이 등을 관찰하고, 특정 임계값에 도달할 경우 경보를 보내 조기 장애 대응에 활용.


결론

Actuator는 애플리케이션 상태와 내부 정보를 노출하는 관리용 엔드포인트를 제공하고, Micrometer는 애플리케이션 메트릭 수집 및 외부 시스템 연동을 간편하게 만들어주는 계층입니다. 이 둘을 결합하면 애플리케이션 관찰성(Observability)을 높여 운영 효율성과 안정성을 강화할 수 있으며, DevOps, SRE 팀이 더 효율적으로 애플리케이션 상태를 추적하고 개선할 수 있는 기반을 마련하게 됩니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유