[모니터링] OpenTelemetry, Tempo, Prometheus, Loki
1. OpenTelemetry
OpenTelemetry는 분산 시스템에서 트레이스(trace), 메트릭(metrics), 로그(logs)를 수집하기 위한 표준 API와 도구를 제공하는 오픈소스 프로젝트입니다. 즉, 애플리케이션의 성능과 동작을 모니터링하고 분석할 수 있도록 데이터를 수집해주는 통합된 프레임워크입니다.
- Trace (추적): 분산 트레이스를 통해 여러 서비스 간에 요청이 어떻게 전달되고 처리되는지 추적할 수 있습니다.
- Metrics (메트릭): 애플리케이션의 성능 지표 (CPU 사용량, 메모리 사용량, 요청 속도 등)를 수집합니다.
- Logs (로그): 애플리케이션 실행 시 발생하는 이벤트를 기록하여 문제 발생 시 원인을 파악하는 데 사용합니다.
OpenTelemetry는 애플리케이션 코드에 이러한 데이터를 삽입하고, 이를 외부 시스템으로 내보내는 역할을 합니다. OpenTelemetry의 데이터를 처리할 수 있는 도구로는 Tempo(트레이스), Prometheus(메트릭), Loki(로그) 등이 있습니다.
2. Tempo (트레이스)
Tempo는 Grafana Labs에서 제공하는 분산 트레이스 저장소로, OpenTelemetry와 같은 도구에서 수집한 트레이스를 저장하고 검색할 수 있습니다.
- Trace (추적): 서비스 간에 요청이 전달되는 경로를 시각화하여 성능 병목이나 지연을 분석할 수 있게 도와줍니다. 예를 들어, 한 서비스에서 다른 서비스로의 요청이 어디에서 지연되었는지 추적할 수 있습니다.
- 특징: Tempo는 트레이스 전용 저장소로, 지표와 로그와는 분리된 시스템입니다. Loki나 Prometheus와 쉽게 통합할 수 있습니다.
3. Prometheus (메트릭)
Prometheus는 메트릭 수집과 모니터링을 위한 도구입니다. 주로 시간 시리즈 데이터를 저장하고 분석하는 데 사용됩니다.
- Metrics (메트릭): Prometheus는 애플리케이션과 인프라에서 CPU 사용량, 메모리 사용량, 요청 수, 응답 시간 등과 같은 지표를 수집하고 저장합니다. 이를 통해 시스템의 성능을 실시간으로 모니터링할 수 있습니다.
- Scraping: Prometheus는 타겟 시스템의 메트릭을 주기적으로 '스크레이핑' 하여 수집합니다.
- 알람: 수집된 데이터를 기반으로 알람 룰을 설정하여 특정 임계값에 도달하면 경고를 보내는 기능도 제공합니다.
4. Loki (로그)
Loki는 Grafana Labs에서 제공하는 로그 수집 및 저장 시스템으로, Prometheus와 유사하지만 로그에 초점을 맞춥니다. Prometheus가 메트릭 데이터를 처리하듯이, Loki는 로그 데이터를 처리합니다.
- Logs (로그): 애플리케이션에서 발생하는 다양한 로그 데이터를 수집하여 검색 및 분석할 수 있도록 도와줍니다. Loki는 대용량의 로그 데이터를 효율적으로 처리하도록 설계되었습니다.
- 특징: Loki는 메트릭과 로그 데이터를 결합하여 분석할 수 있는 강력한 기능을 제공합니다. 예를 들어, 특정 메트릭에 문제가 발생했을 때 해당 시간대의 로그를 빠르게 조회할 수 있습니다.
통합 모니터링
OpenTelemetry로 데이터를 수집하고, Tempo, Prometheus, Loki를 통해 각각 트레이스, 메트릭, 로그를 저장하고 분석할 수 있습니다. Grafana는 이러한 도구들을 시각화하여 모니터링할 수 있는 대시보드를 제공합니다.
이러한 시스템을 통해 분산된 애플리케이션의 성능을 종합적으로 모니터링하고 분석할 수 있습니다.