본문 바로가기
모니터링 환경 구축하기

오픈소스로 모니터링 환경 구축하기(2) - OpenTelemetry

by fiat_lux 2025. 10. 11.

OpenTelemetry란?

  •  애플리케이션의 동작을 모니터링하고 분석할수 있도록 데이터를 수집하는도구
  • 서비스가 어떤 요청을 받고 얼마나 걸리고 어디서 병목이 생긴는지를 한눈에 볼수 있도록 만들어주는것
  • OpenTelemetry = Telemetry Data (측정 데이터)를 Open 하게 표준화한 프로젝트

쉽게 말해서

"어떤 애플리케이션이든 같은 방식으로 관측 데이터를 수집하고
모니터링 시스템으로 보내는 표준 파이프라인"

 

이라고 생각하면 된다.

 

OpenTelemetry(OTel)을 적용하면 서비스가 어떤 요청을 받고, 어디서 병목이 생기고, 얼마나 지연되는지 파악할 수 있다.


OpenTelemetry의 역할

역할 설명 예시
수집 (Instrumentation) 애플리케이션 코드에서 로그, 메트릭, 트레이스를 추출 HTTP 요청 지연시간, DB 쿼리 시간, 에러 로그
전송 (Export) 수집된 데이터를 백엔드 (Grafana, Prometheus등)로 전송 Loki로 로그 전송, Tempo로 트레이스 전송
표준화 (Standard) 다양한 언어와 프레임워크에서 같은 포맷 사용 Java, Python 등 어떤 환경에서도 동일한 포맷

 

이 세가지 역할을 통해 운영 환경을 가시성 있게 만들수 있다.

 

 

OpenTelemetry 구성 요소

1. Instrumentation (계측)

  • 애플리케이션 코드나 런타임에 에이전트를 붙여 관측 데이터를 수집하는 단계이다.
  • 개발자가 직접 계측 코드를 작성할 수도 있고, OTel 에이전트를 자동으로 붙일 수도 있다.

 

 

2. Collector (수집기)

  • 앱에서 받은 로그, 메트릭, 트레이스 데이터를 가공하고 적절한 백엔드로 전송한다.
  • 파이프라인 구조: Receiver → Processor → Exporter
  • 역할: 표준화된 파이프라인을 통해 원하는 백엔드로 데이터를 보내는 역할
구성 요소 역할
Receiver 애플리케이션으로부터 데이터를 수신
Processor 필터링, 집계, 변환 등의 중간 처리
Exporter Loki, Tempo, Prometheus 등으로 전송

 

 

 

3. Backend (저장소)

  • 수집된 데이터를 저장하고 시각화하는 곳이다.
  • Prometheus(메트릭), Loki(로그), Tempo(트레이스), Grafana(시각화) 등이 대표적이다.

Collector ──▶ Loki (로그)
          ├─▶ Tempo (트레이스)
          └─▶ Prometheus (메트릭)

 

  • OTel 자체는 백엔드를 제공하지 않는다.
  • 대신 표준화된 파이프라인을 통해 원하는 백엔드로 데이터를 보낼 수 있도록 해준다.

수집하는 데이터 종류

 

데이터 종류 설명 예시
로그 (Log) 에러나 이벤트 기록 API 에러, 특정 로직 이벤트
메트릭 (Metrics) 시스템의 상태 수치화 요청 수, 에러율, CPU 사용량
트레이스 (Trace) 요청의 전체 흐름을 추적 서비스 A -> B -> DB 호출 구간 지연 및 병목 파악

 

세 데이터를 함께 수집하고 활용하면 "어떤 문제가 언제, 어디서, 왜 발생했는가"를 빠르게 추적할 수 있다.

 

 

 

 

요약 하자면

OpenTelemetry는 모니터링을 위한 도구라기보다는 

다양한 시스템에 공통적으로 적용 가능한 표준 관측 파이프라인이다. 

그래서 로그 수집, 트레이스 추적, 메트릭 집계 등 서비스 전반의 모니터링 체계를 통합할 수 있다.