Post

OpenTelemetry - OpenTelemetry란?

OpenTelemetry - OpenTelemetry란?

Intro

현대 소프트웨어 시스템은 모놀리스 구조에서 마이크로서비스 아키텍처(MSA)로 전환됨에 따라 복잡성이 급증했습니다.
기존의 로그메트릭만으로는 각 서비스 간의 연관성과 오류의 원인을 파악하기 어려워졌으며, 이를 해결하기 위해 등장한 개념이 Observability입니다.

OpenTelemetry는 Observability를 달성하기 위해 트레이스(Trace), 메트릭(Metric), 로그(Log) 데이터를 표준화된 방식으로 수집하고 관리하는 오픈소스 프레임워크입니다.


왜 Observability가 중요한가?

모놀리스 vs 마이크로서비스

구분모놀리스마이크로서비스
구조하나의 애플리케이션 내부에서 모든 기능 수행여러 개의 독립적인 서비스가 협업하여 시스템 구성
문제 추적로그 및 메트릭만으로도 원인 파악이 비교적 쉬움서비스 간 연결이 많아 단일 로그·메트릭만으로 부족
오류 원인 파악단일 시스템에서 오류 발생 지점 명확서비스 간 호출이 많아 전체 흐름을 파악해야 오류 식별
관측 가능성기본 로그/메트릭으로 충분분산 트레이싱, 로그, 메트릭 모두 필요

핵심 포인트

  • MSA 환경에서는 요청이 여러 서비스와 분산된 인프라를 거치므로 전체 흐름(Trace)과 세부 성능 지표가 필수입니다.
    • 분산되어 추적된 로그나 메트릭들을 요청의 단위에서 연결하고 오류를 찾아내는 것이 중요합니다.
  • Observability는 시스템이 복잡하더라도 문제를 빠르게 찾아내고 성능을 최적화하는 데 필수적인 요소입니다.

OpenTelemetry란 무엇인가?

OpenTelemetryCNCF(Cloud Native Computing Foundation)의 오픈소스 프로젝트로, Observability를 위해 데이터를 생성, 수집, 처리, 전달하는 표준을 제공합니다.

주요 특징

  1. 표준화된 프레임워크: 다양한 언어와 환경에서 일관된 방식 제공
  2. 벤더 중립성: 특정 벤더에 종속되지 않으며 다양한 백엔드와 호환
  3. 확장성: 필요에 따라 Receiver, Exporter 등 커스터마이징 가능
  4. 중요한 데이터 집중: 데이터 저장·분석은 다른 툴에서 담당하고 OpenTelemetry는 계측에 집중

OpenTelemetry 주요 개념

개념설명
Traces (트레이스)분산 트레이싱으로 요청 흐름을 추적하여 문제 구간 시각화
Metrics (메트릭)CPU 사용률, 응답 시간, 에러율과 같은 시간 기반의 성능 지표를 측정
Logs (로그)특정 이벤트나 상태 변화를 기록하는 메시지
Context Propagation서비스 간 요청 흐름을 연결하여 전체 트레이스 단위를 완성하는 기술
Resource텔레메트리 데이터를 생성한 엔티티의 속성 정의 (service.name, k8s.pod.name 등)

OpenTelemetry의 아키텍처

  1. API & SDK: 계측(Instrumentation) 데이터를 생성 및 관리
  2. Instrumentation Libraries: HTTP, DB 클라이언트 등을 자동 계측
  3. Collector: 다양한 소스의 데이터를 수집, 처리 후 원하는 백엔드로 전송
  4. Exporters: 데이터를 Jaeger, Prometheus, OTLP 등 다양한 형태로 내보내기

OpenTelemetry Collector 흐름


Observability 구현 절차

  1. 계측(Instrumentation)

    • Code-based: 개발자가 직접 코드에 계측 로직 추가 (세밀한 제어 가능)
    • Zero-code: 자동 계측을 통해 코드 수정 없이 데이터 수집 시작
  2. Collector 도입

    • 다양한 소스에서 데이터를 수집, 필터링, 가공 후 백엔드 시스템으로 전송
  3. Export & Backend

    • Traces, Metrics, Logs를 Jaeger, Prometheus 등의 백엔드로 전달해 시각화 및 분석
1
**"계측하고 모아서 Backend로 보내고 시각화하고 분석하는게 목적"**

분산 트레이싱의 중요성

분산 시스템에서는 하나의 요청이 여러 서비스를 거치므로 각 단계의 흐름(Span)을 추적해야 병목과 오류를 빠르게 발견할 수 있습니다.

  • Span: 작업 단위 (시작/종료 시간, 메타데이터 포함)
  • Trace: 여러 Span을 하나의 요청 흐름으로 묶은 단위
  • Logs와 Span 연동: 로그를 Span에 연결해 문제 발생 시 상세 상황 파악

정리

OpenTelemetry는 모던 소프트웨어 아키텍처에서 Observability를 위한 표준화된 도구입니다.

  • 트레이스, 메트릭, 로그를 통해 시스템 성능을 모니터링하고 문제를 정확히 파악할 수 있습니다.
  • MSA와 클라우드 환경에서 벤더 종속 없이 효율적으로 관측 가능성을 확보할 수 있습니다.

This post is licensed under CC BY 4.0 by the author.