본문 바로가기

DevOps

[OpenTelemetry] OpenTelemetry이란 무엇인가?

728x90
반응형

OpenTelemetry(OTel)는 개발 팀이 단일 형식으로 원격 측정 데이터를 생성, 처리 및 전송할 수 있는 오픈 소스 Observability 프레임워크입니다. CNCF에서 개발되어 메트릭, 로그, 추적을 수집하고 라우팅하는 표준화된 프로토콜과 도구를 제공합니다. 벤더 중립적인 SDK, API, 도구를 통해 데이터를 원하는 백엔드로 전송할 수 있습니다. 클라우드 네이티브 애플리케이션에서 통합 가시성 표준으로 자리잡고 있으며, 벤더나 기술에 종속되지 않는 유연성을 제공합니다.

https://opentelemetry.io/img/otel_diagram.png

OpenTelemetry는 언제 어디에 활용할 수 있는가?

OpenTelemetry는 클라우드 네이티브 애플리케이션의 모니터링과 성능 최적화를 위한 도구로 사용됩니다. 주요 용도는 다음과 같습니다:

  1. 분산 추적 (Distributed Tracing): 서비스 간의 요청 흐름을 추적하여 병목 현상을 파악하고 문제를 해결합니다.
  2. 메트릭 수집 (Metrics Collection): 애플리케이션 및 인프라의 성능 데이터를 수집하여 모니터링합니다.
  3. 로그 수집 (Logging): 로그 데이터를 중앙에서 수집, 분석하여 오류를 진단하고 디버깅합니다.

이 도구를 사용하면 시스템의 가시성을 높이고 문제를 신속하게 식별하고 해결할 수 있습니다.

원격 측정 데이터알고 넘어가기!

원격 측정 데이터는 시스템, 애플리케이션, 네트워크 등 다양한 소스에서 자동으로 수집된 데이터를 의미합니다. 이 데이터는 주로 모니터링, 분석, 최적화를 위해 사용됩니다. 원격 측정 데이터의 주요 요소는 다음과 같습니다:

  1. 메트릭 (Metrics): 성능 및 상태 정보를 수집하여 모니터링합니다.
  2. 로그 (Logs): 이벤트 및 오류 정보를 기록하여 문제를 진단합니다.
  3. 트레이스 (Traces): 분산 시스템의 요청 흐름을 추적하여 병목 현상을 파악합니다.

이 데이터를 통해 시스템의 가시성을 높이고, 문제를 빠르게 해결하며, 성능을 최적화할 수 있습니다.

OpenTelemetry의 작동 방식

https://www.elastic.co/kr/what-is/opentelemetry

OpenTelemetry는 애플리케이션에서 원격 측정 데이터를 수집하고 이를 중앙화된 시스템으로 전달하는 과정에서 작동합니다. 주요 작동 방식은 다음과 같습니다:

  1. 데이터 수집 (Instrumentation):
    • 자동화된 수집: 라이브러리와 에이전트를 사용하여 애플리케이션 코드에 최소한의 변경만으로 데이터를 수집합니다.
    • 수동 수집: 직접 코드에 API 호출을 추가하여 원하는 데이터를 수집합니다.
  2. 데이터 전송 (Exporting):
    • 수집된 데이터는 다양한 포맷으로 변환되어 중앙화된 모니터링 시스템 또는 데이터베이스로 전송됩니다.
    • 데이터 전송은 다양한 프로토콜을 사용하며, 대표적으로 HTTP, gRPC 등이 있습니다.
  3. 데이터 분석 (Processing):
    • 중앙화된 시스템에서 수집된 데이터를 분석하고 시각화하여 인사이트를 도출합니다.
    • 대표적인 도구로는 Grafana, Prometheus, Jaeger 등이 있습니다.

OpenTelemetry의 핵심 구성 요소

 

  1. Collector: 원격 측정 데이터를 수신, 처리 및 내보내는 벤더 독립적 프록시. 데이터 수신 및 처리 후 내보내기 가능.
  2. 언어 SDK: OpenTelemetry API를 통해 원격 측정 데이터를 생성하고 백엔드로 내보낼 수 있게 지원.
  3. 계측 라이브러리: 다양한 라이브러리 및 프레임워크에서 원격 측정 데이터를 생성하는 구성 요소.
  4. 자동 계측: 소스 코드 변경 없이 애플리케이션 계측 지원.
  5. 내보내기 도구: 계측기와 백엔드 구성을 분리해 백엔드 변경을 쉽게 하며, 여러 백엔드에 데이터 업로드 가능.

OpenTelemetry의 이점 

  1. 데이터 표준화:
    • Splunk, New Relic, Dynatrace, Datadog 등 다양한 백엔드에 일관된 방식으로 데이터 수집 및 내보내기 가능.
    • Observability를 단순화하고 시스템 상태를 더 잘 이해하며 성능 문제를 신속히 해결.
    • 자체 솔루션 개발 불필요, 설정 간소화로 시간 및 비용 절감.
  2. 벤더 종속성 없음:
    • 특정 벤더에 구애받지 않고 원하는 백엔드를 선택 가능.
    • 기술 요구사항 변화에 유연하게 대응.
    • 플랫폼 간 호환성 및 손쉬운 통합 가능.

OpenTelemetry Collector 구성 요소

  1. Receivers:
    • 데이터 수신 담당 (Metrics, Traces, Logs).
    • gRPC, HTTP 프로토콜 지원.
    • 다양한 Receivers 제공.
    • 하나 이상의 Receivers 구성 가능.
  2. Processors:
    • 수신한 데이터를 백엔드로 보내기 전에 처리.
    • 데이터 변환 및 필터링 지원.
    • 다양한 Processors 제공.
  3. Exporters:
    • 데이터를 백엔드로 전송 (Metrics, Traces, Logs).
    • 다양한 Exporters 제공.
    • 하나 이상의 Exporters 구성 가능.

Receivers는 데이터를 수집하는 역할을 하며, 다양한 프로토콜을 통해 데이터를 수신합니다. Processors는 수신된 데이터를 변경, 필터링 또는 처리하여 최적의 형태로 만듭니다. Exporters는 처리된 데이터를 하나 이상의 백엔드 시스템으로 전송하여 저장하고 분석할 수 있도록 합니다. 이를 통해 데이터 수집, 처리, 전송의 전 과정을 효율적으로 관리할 수 있습니다.

728x90
반응형