Skip to content

Latest commit

 

History

History
172 lines (110 loc) · 6.59 KB

logging-monitoring.md

File metadata and controls

172 lines (110 loc) · 6.59 KB

로깅 및 모니터링 (Logging & Monitoring)

목차


로깅과 모니터링의 중요성

마이크로서비스 아키텍처(MSA)는 많은 독립적인 서비스로 구성됩니다. 각 서비스는 개별적으로 실행되며, 서로 다른 환경에서 작동할 수 있습니다. 이로 인해 시스템에서 발생하는 오류 추적성능 분석이 어렵습니다.

  • 로깅: 서비스 동작에 대한 데이터를 기록하고, 오류를 추적하며, 문제를 진단.
  • 모니터링: 시스템 성능과 상태를 실시간으로 감시하고, 이상 징후를 사전에 파악.

MSA에서 로깅과 모니터링의 역할

  1. 장애 복구:
    • 서비스 간의 상호작용과 오류를 정확히 추적하여 빠르게 복구 가능.
  2. 성능 최적화:
    • 병목 지점을 발견하고, 리소스 사용량을 최적화.
  3. 운영 효율성 향상:
    • 자동화된 경고와 대시보드로 시스템 상태를 한눈에 파악.

MSA 환경에서 로깅의 특징

1. 분산된 로그 데이터

  • 각 서비스는 독립적으로 실행되므로, 로그가 분산되어 저장됩니다.
  • 중앙 집중식 로그 수집 및 관리가 필요합니다.

2. 서비스 간 호출 추적

  • 분산 시스템에서는 하나의 요청이 여러 서비스를 거칩니다.
  • 분산 트레이싱을 통해 서비스 간의 호출 관계를 시각화.

3. 로그 표준화

  • 각 서비스의 로그 형식이 일관되지 않으면 로그 분석이 어려워짐.
  • JSON, Structured Logging 등 통일된 포맷 사용.

4. 컨텍스트 로그 관리

  • 요청 ID, 트랜잭션 ID를 추가하여 로그의 상관 관계를 추적.

MSA 환경에서 모니터링의 특징

1. 실시간 데이터 수집

  • 서비스의 상태, 응답 시간, CPU 사용량, 메모리 등을 실시간으로 수집.

2. 서비스 간의 연계성 모니터링

  • 각 서비스의 상호작용을 모니터링하고, 장애가 다른 서비스에 미치는 영향을 파악.

3. 메트릭 기반 경고

  • 사전에 설정한 임계값을 초과하면 자동으로 알림 전송.

4. 대시보드 시각화

  • Grafana, Kibana 등 대시보드 도구를 사용하여 모니터링 데이터를 시각화.

분산 로깅 (Distributed Logging)

1. 중앙 집중식 로그 수집

  • 각 서비스의 로그를 ElasticSearch, Graylog, Splunk와 같은 중앙 시스템에 수집.
  • 로그 수집기: Logstash, Fluentd, Filebeat.

2. 구조화된 로그

  • 로그 데이터를 분석하기 쉽게 JSON, Key-Value 형식으로 구조화.
  • 예:
    {
      "timestamp": "2024-11-25T10:00:00Z",
      "service": "user-service",
      "level": "ERROR",
      "message": "Database connection failed",
      "request_id": "abc123",
      "transaction_id": "xyz789"
    }

분산 트레이싱

  • 분산 트레이싱 도구(Jaeger, Zipkin)를 사용하여 요청의 흐름을 추적.
  • 트랜잭션 ID와 요청 ID를 활용하여 여러 서비스의 호출을 하나로 연결.

분산 모니터링 (Distributed Monitoring)

1. 메트릭 수집

  • Prometheus, StatsD와 같은 도구를 사용하여 각 서비스의 메트릭 데이터를 수집.
  • 주요 메트릭:
    • 요청 응답 시간(latency)
    • 에러율
    • 서비스 가용성
    • 리소스 사용량(CPU, 메모리 등)

2. 애플리케이션 성능 관리(APM)

  • New Relic, Datadog, AppDynamics 등의 APM 도구를 사용하여 서비스 성능을 추적.
  • 병목 지점을 발견하고 최적화.

3. 알림 설정

  • 임계값 초과 시 알림을 통해 문제를 조기에 발견.
  • Slack, PagerDuty, 이메일과 연동.

주요 도구 및 기술 스택

분류 도구 주요 기능
로깅 ElasticSearch + Logstash + Kibana (ELK) 로그 수집, 저장, 검색, 시각화
Fluentd 경량 로그 수집기
Graylog 로그 관리 및 분석
모니터링 Prometheus + Grafana 메트릭 수집 및 대시보드 시각화
Datadog 통합 모니터링 및 알림 관리
New Relic 애플리케이션 성능 모니터링
분산 트레이싱 Jaeger 요청 추적 및 분산 트레이싱
Zipkin 서비스 호출 흐름 추적

MSA 로깅 및 모니터링 도입 시 주의사항

1. 성능 오버헤드 관리

  • 지나치게 많은 로그와 모니터링 데이터를 수집하면 성능과 비용에 영향을 미칠 수 있음.
  • 필터링 및 샘플링을 통해 필요한 데이터만 수집.

2. 로그 데이터 보안

  • 로그에 민감한 데이터를 기록하지 않도록 주의.
  • 암호화된 스토리지와 접근 제어를 사용.

3. 표준화

  • 로그와 메트릭의 형식을 표준화하여, 여러 도구 간 호환성을 높임.

4. 확장성

  • 서비스와 트래픽 증가를 고려하여 로그와 메트릭 저장소의 확장성을 확보.

5. 대시보드와 알림 최적화

  • 모든 데이터를 표시하려 하면 대시보드가 복잡해질 수 있음.
  • 중요 이벤트를 중심으로 대시보드와 알림을 설계.

결론

MSA 환경에서 로깅과 모니터링은 서비스 간 상호작용을 이해하고, 장애를 빠르게 복구하며, 성능을 최적화하는 데 필수적입니다. 중앙 집중화된 로깅과 실시간 모니터링 도구를 적절히 결합하면 복잡한 분산 시스템에서도 운영 효율성을 크게 향상시킬 수 있습니다.