제01권 · 제10호 CS · AI · Infra 2026년 5월 14일

AI 용어집

용어 사전레퍼런스학습
인프라 · 하드웨어

OpenTelemetry오픈텔레메트리

난이도

쉽게 이해하기

마이크로서비스가 늘어나면 서비스마다 로그, 메트릭, 트레이스를 다르게 만들고 다른 방식으로 전송해 운영팀이 전체 흐름을 잇기 어렵습니다. 벤더를 바꾸거나 도구를 섞어 쓰면 포맷과 라이브러리 호환성 문제로 공수가 커집니다. 이 혼란을 줄이기 위해 표준화된 계측과 전송 방식이 필요합니다. OpenTelemetry는 여러 언어와 프레임워크에서 같은 방법으로 데이터를 수집하고 같은 규격(OTLP)으로 보내게 하는 공통 표준입니다. 앱은 각 언어의 API/SDK로 스팬과 메트릭 이벤트를 만들고, 이를 OTLP로 Collector에 보냅니다. Collector는 받은 데이터를 필요한 형태로 가공해 원하는 백엔드로 전달합니다. 예를 들어 앱은 Tracer/Meter Provider를 설정해 스팬·메트릭을 생성하고, 이를 Exporter나 OTLP 엔드포인트로 내보냅니다. Collector는 OTLP gRPC(예: 4317)나 HTTP(예: 4318)로 수신해 프로세서에서 집계·샘플링 등을 거친 뒤 Jaeger, Prometheus, OpenSearch 같은 시스템으로 내보내도록 구성할 수 있습니다.

비유와 예시

  • 다국어 마이크로서비스 공통 표준화: Go 결제 서비스와 Python 추천 서비스가 각각 SDK로 계측하고 OTLP로 Collector에 전송합니다. 운영팀은 Jaeger와 Prometheus 대시보드에서 동일 규격의 데이터로 요청 흐름과 지연을 추적합니다.
  • 백엔드 교체 시 코드 수정 최소화: 기존 Jaeger로 트레이스를 보던 팀이 OpenSearch로 로그 분석을 추가합니다. Collector의 Exporter 설정만 바꿔 새로운 백엔드로 내보내고, 애플리케이션 계측 코드는 그대로 둡니다.
  • Kubernetes 사이드카 수집 경로: 각 파드 옆에 Collector 사이드카를 띄워 OTLP로 지역 수집 후 중앙 Collector로 전달합니다. 클러스터 네트워크 변화에도 앱은 동일 엔드포인트만 바라보면 됩니다.

한눈에 비교

OpenTelemetryPrometheusJaeger
주된 데이터트레이스·메트릭·로그메트릭트레이스
전송/수집OTLP + CollectorPull/Push + Exporters에이전트/컬렉터 수집
적용 범위다언어·다백엔드 표준화시계열 메트릭 수집·질의분산 트레이싱 시각화
코드 계측언어별 API/SDK·자동계측라이브러리 Exporter트레이싱 라이브러리/헤더

OpenTelemetry는 벤더·도구 전환을 염두에 둔 공통 계측·전송 표준이고, Prometheus와 Jaeger는 각각 메트릭·트레이스 특화 백엔드다.

어디서 왜 중요한가

  • OpenTelemetry 데모 스택: OTLP(gRPC/HTTP)로 Collector에 수집하고, Prometheus(메트릭)·Jaeger(트레이스)·OpenSearch(로그)로 내보내며 Grafana 등에서 시각화하는 흐름을 보여줍니다.
  • 교차 언어 일관성: 세맨틱 컨벤션과 공통 API로 서비스 간 스팬·메트릭을 비교 가능하게 만들어 분산 환경의 해석 비용을 줄입니다.
  • 표준 프로토콜 채택: OTLP가 SDK와 백엔드 사이의 기본 와이어 포맷이 되어 방화벽 규칙과 엔드포인트 관리(예: 4317/4318)가 단순해졌습니다.
  • 운영 디커플링: 라우팅·프로세서·Exporter 구성을 Collector에서 제어해 백엔드 변경 시 애플리케이션 재배포를 줄입니다.

자주 하는 오해

  • ❌ 오해: OpenTelemetry는 모니터링 제품이다 → ✅ 실제: 제품이 아니라 계측·수집·전송을 표준화하는 프레임워크이자 Collector입니다.
  • ❌ 오해: Collector가 없으면 동작하지 않는다 → ✅ 실제: SDK는 직접 Exporter로 내보내거나 OTLP로 Collector에 보낼 수 있습니다.
  • ❌ 오해: 트레이스만 다룬다 → ✅ 실제: 트레이스·메트릭·로그를 모두 다룹니다.

대화에서는 이렇게

  • "프론트엔드와 결제 모두 OTLP gRPC 4317로 Collector에 붙이고, Exporter는 Jaeger/Prometheus를 동시에 사용하죠."
  • "Java는 자동계측, Go는 SDK 코드 계측으로 가되 Tracer/Meter Provider 네이밍 규칙을 맞춥시다."
  • "Collector 파이프라인만 업데이트해서 OpenSearch 로그 경로를 추가하면 앱 코드는 건들 필요 없습니다."
  • "SDK 배칭/재시도를 켜서 배포 중 짧은 백엔드 장애를 흡수합시다."
  • "Grafana는 Prometheus(9090)와 Jaeger(16686)에서 읽도록 유지합니다."

함께 읽으면 좋은 용어

참고 자료

도움이 되었나요?