MSA

[MSA] Prometheus, Grafana로 모니터링 체계 구축하기

인생아 2025. 7. 24. 12:40
반응형

마이크로서비스 아키텍처(MSA)는 서비스가 작고 많기 때문에 시스템 전체의 상태를 실시간으로 모니터링하지 않으면 장애를 감지하기 어렵다.
전통적인 로그 기반 모니터링만으로는 서비스 간 호출, 응답 시간, 시스템 리소스 사용량을 효율적으로 파악할 수 없다.
이러한 문제를 해결하기 위해 가장 많이 사용되는 모니터링 도구가 바로 PrometheusGrafana이다.

✅ MSA에서 모니터링이 중요한 이유

  • 서비스 수가 많아지며 장애의 원인 파악이 어려워진다.
  • 각 서비스가 독립적으로 배포되므로 개별 성능 상태를 추적해야 한다.
  • 부하 증가나 리소스 이상을 빠르게 파악하고 자동 대응해야 한다.
  • 배포 이후 성능 하락, 트래픽 이상, 장애 조짐을 선제적으로 감지해야 한다.

즉, 수집 → 저장 → 시각화 → 알람의 전 과정을 자동화한 모니터링 체계가 필요하다.

🌐 Prometheus란?

Prometheus는 CNCF(Cloud Native Computing Foundation)의 대표적인 오픈소스 시계열 모니터링 시스템이다.
특히 Kubernetes와의 통합이 매우 뛰어나며, 서비스 메트릭 수집 및 알람 설정이 유연하다.

🔧 주요 특징

  • Pull 방식의 메트릭 수집 (서비스가 메트릭을 노출 → Prometheus가 주기적으로 수집)
  • 시계열 데이터 저장 및 쿼리 (PromQL)
  • AlertManager를 통한 알림 전송
  • 서비스 자체 또는 Sidecar 방식으로 Exporter 설치 가능
반응형

🛠️ Spring Boot에서의 적용 예시

  • gradle
implementation 'io.micrometer:micrometer-registry-prometheus'
  • yml
 
management:
  endpoints:
    web:
      exposure:
        include: prometheus

서비스가 /actuator/prometheus 엔드포인트로 메트릭을 노출한다.

📈 Grafana란?

Grafana는 Prometheus에서 수집한 시계열 데이터를 대시보드 형태로 시각화하는 도구이다.
직관적인 UI와 다양한 위젯을 통해 개발자와 운영자가 시스템 상태를 실시간으로 파악할 수 있도록 도와준다.

✅ 주요 기능

  • 다양한 시계열 데이터 소스 연결 (Prometheus, Loki, Elasticsearch 등)
  • 실시간 대시보드 구성
  • 사용자별 권한 설정
  • 알람 설정 및 슬랙, 이메일, SMS 등 연동

🧠 대시보드 구성 예시

항목 지표 예시
서비스 응답 시간 http_server_requests_seconds_max
에러율 http_server_requests_seconds_count (5xx 응답 비율)
CPU, Memory 사용량 node_exporter, cadvisor 메트릭
DB 연결 수 datasource_active_connections
인스턴스 수 up, instance count

🔄 Prometheus + Grafana 통합 흐름

  • Prometheus가 각 서비스에서 메트릭 수집
  • Grafana가 Prometheus를 데이터 소스로 사용
  • 실시간 차트, 알람, 히스토리 분석 제공
반응형

🔔 알람 설정 예시 (Prometheus AlertManager)

  • yml
groups:
- name: instance_down
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "Instance {{ $labels.instance }} down"

이 설정은 서비스 인스턴스가 30초 동안 응답하지 않으면 경고를 발생시킨다.

🧠 실무 적용 팁

  • 모든 마이크로서비스에 Micrometer + Prometheus Exporter를 포함시키는 것이 핵심이다.
  • 메트릭은 반드시 표준화된 네이밍으로 관리해야 한다.
  • 알람은 임계값 기반(Alert Rule)변화율 기반(Anomaly Detection)을 혼합해야 한다.
  • 인프라 상태까지 모니터링하려면 Node Exporter, Kube-State-Metrics, cAdvisor 등을 함께 사용한다.
  • 대시보드는 사용자(개발/운영/보안 등) 역할에 따라 나누어 구성하는 것이 효율적이다.

✅ 결론

MSA 환경에서 Prometheus와 Grafana는 가장 실전적인 모니터링 조합이다.
Prometheus는 강력한 메트릭 수집기이며, Grafana는 직관적인 시각화 도구이다.
이 두 가지를 함께 사용하면 서비스 상태를 실시간으로 파악하고, 장애를 조기에 감지하며, 운영 안정성을 확보할 수 있다.
모니터링 체계는 더 이상 옵션이 아니라, MSA 운영의 필수 인프라이다.

📌 참고한 공식 문서

반응형