OpenTelemetry란 무엇인가?
OpenTelemetry의 정의, 이점 및 주요 구성 요소
OpenTelemetry (OTel)는 오픈 소스 통합 가시성 프레임워크로, 텔레메트리 데이터(로그, 메트릭, 추적)를 하나의 통합된 형식으로 수집하고 처리하며 내보냅니다.
클라우드 네이티브 컴퓨팅 재단(CNCF)에서 텔레메트리 데이터를 수집하고 통합 가시성 백엔드로 전송하는 방식을 표준화하기 위해 개발했습니다. OpenTelemetry는 특정 벤더에 구애받지 않는 SDK, API, 도구를 제공하므로, 데이터를 OpenTelemetry 규격을 지원하는 통합 가시성 백엔드로 전송해 분석할 수 있습니다.
OpenTelemetry는 클라우드 네이티브 애플리케이션에서 지배적인 통합 가시성 텔레메트리 표준으로 빠르게 자리잡고 있습니다. 특정 벤더나 기존 기술의 한계에 얽매이지 않고 미래의 데이터 수요에 대비하고자 하는 조직에는 OpenTelemetry를 채택하는 것이 매우 중요하다고 생각됩니다.

텔레메트리 데이터(로그, 메트릭, 추적) 이해하기
텔레메트리 데이터는 현대 통합 가시성의 기초입니다. 로그, 메트릭, 추적이라는 세 가지 핵심 기반을 통해 개발자, DevOps, IT 팀은 시스템 동작, 성능, 상태에 대한 심층적인 인사이트를 얻을 수 있습니다.
- 로그: 특정 시점에 발생한 개별 이벤트의 텍스트 기록
- 예시: 타임스탬프, 사용자 ID, IP 주소가 기록된 로그인 시도
- 적합한 용도: 문제 해결, 디버깅 및 코드 실행 검증
- 메트릭: 시스템 성능을 반영하는 시간 경과에 따른 수치 측정값(시계열 데이터)
- 예시: CPU 사용률 85% 또는 HTTP 요청률 1,200/s
- 적합한 용도: 실시간 모니터링, 알림, 트렌드 분석
- 추적: 여러 시스템 구성 요소를 통과하는 요청 또는 트랜잭션의 경로로, 스팬으로 나뉩니다.
- 예시: 전자상거래 플랫폼의 마이크로서비스에서 결제 프로세스 추적하기
- 최적 대상: 분산 아키텍처에서 성능 병목 현상 파악 및 요청 흐름 이해
각 텔레메트리 유형을 OpenTelemetry로 수집하는 방법에 대한 자세한 설정 안내는 Elastic에서 OpenTelemetry 시작하기 설명서를 참조하세요.
OpenTelemetry의 간략한 역사
OpenTelemetry 이전에는 업계가 OpenTracing과 OpenCensus에 의존했습니다. 이 두 프로젝트는 목적은 유사했지만 구현 방식이 다른 중복 프로젝트였습니다. 단편화를 없애기 위해 CNCF가 이 둘을 OpenTelemetry라는 단일 프로젝트로 병합했습니다.
주요 레거시 구성 요소
- OpenTracing: 특정 벤더에 구애받지 않는 텔레메트리 데이터 전송용 API
- OpenCensus: 메트릭/추적 수집을 위한 언어별 라이브러리
병합 결과: OTel은 다음을 통해 둘을 하나의 프레임워크로 통합합니다.
- API
- SDKs
- 계측 옵션
- 수집 서비스
OpenTracing과 OpenCensus의 통합으로 등장한 OpenTelemetry는 이 둘의 강점을 결합해 통합 가시성을 위한 단일 글로벌 표준을 만들었습니다.
OpenTelemetry를 사용하면 개발자는 더 이상 OpenTracing과 OpenCensus 중 하나를 선택할 필요가 없습니다. OpenTelemetry는 데이터를 수집하고 전송하기 위한 통합 라이브러리, API, 에이전트 및 컬렉터 서비스 세트를 제공합니다.
OpenTelemetry 작동 방식
OpenTelemetry는 텔레메트리 데이터를 수집하여, 선택한 통합 가시성 백엔드로 전송하는 표준화된 파이프라인을 제공합니다. 특정 벤더에 종속되지 않고 확장 가능하도록 설계되었습니다.
- API: 텔레메트리 데이터를 생성하기 위한 언어별 인터페이스
- SDK: API를 구현하고 데이터 처리, 배치, 내보내기를 수행합니다.
- 계측: 자동(코드 변경 없음) 또는 수동(사용자 정의 메트릭/이벤트)일 수 있습니다.
- 내보내기: OTLP와 같은 표준 프로토콜을 사용해 처리된 데이터를 하나 이상의 대상으로 전송합니다.
언어별 OpenTelemetry API는 시스템 전체에서 텔레메트리 데이터 수집을 조정하고 코드를 계측합니다. OpenTelemetry SDK는 데이터 수집, 처리 및 내보내기를 지원하는 라이브러리를 통해 API를 구현하고 지원합니다. 또한 OpenTelemetry는 서비스의 자동 계측 기능을 제공하고 사용자 정의 계측 기능을 지원합니다. 벤더에서 제공하는 내보내기 또는 OpenTelemetry 프로토콜(OTLP)을 사용하여 텔레메트리 데이터를 내보낼 수 있습니다.
OpenTelemetry의 핵심 구성 요소
OpenTelemetry의 핵심 구성 요소는 다음과 같습니다.
| 구성 요소 | 목적 | 사용 예시 |
|---|---|---|
| Collector | 여러 형식의 텔레메트리 데이터를 수신, 처리, 내보내며, 벤더에 구애받지 않음 | Elastic으로 전송하기 전에 Kubernetes 클러스터에서 로그, 메트릭, 추적을 집계 |
| 언어 SDK | 특정 프로그래밍 언어에 대해 OpenTelemetry API를 구현 | Python SDK를 사용하여 Python으로 작성된 애플리케이션을 계측하기 |
| 계측 라이브러리 | 텔레메트리 생성을 위한 인기 있는 프레임워크 및 라이브러리를 자동 계측 | Spring Boot에서 HTTP 요청 메트릭을 자동 수집 |
| 자동 계측 | 코드 변경 없이 텔레메트리 기능 추가 | JVM 기반 마이크로서비스를 모니터링하기 위해 Java 에이전트를 주입 |
| 내보내기 | 수집된 데이터를 하나 이상의 통합 가시성 백엔드로 전송 | Jaeger로 추적을, Prometheus로 메트릭을 내보내기 |
이러한 구성 요소는 백엔드 선택과 관계없이 유연하고 표준화된 데이터 수집을 가능하게 합니다.
Elastic 설명서의 OpenTelemetry Collector 설정에서 전체 설치 안내를 확인하실 수 있습니다.
OpenTelemetry의 이점
OpenTelemetry의 이점은 데이터 표준화와 미래에 대비한 유연성으로, 이를 통해 통합 가시성이 향상되고 효율성이 향상되며 비용이 절감된다는 것입니다.
- 표준화
- Elastic, Splunk, Datadog 등 여러 백엔드에 단일 수집 방법을 사용합니다.
- 로그, 메트릭, 추적을 위한 확장 가능한 단일 프레임워크로 파이프라인 복잡성을 줄입니다.
- 특정 벤더에 구애받지 않음
- 애플리케이션을 다시 계측하지 않고도 백엔드를 전환합니다.
- 전체 교체 없이 새로운 통합 가시성 도구를 쉽게 도입합니다.
- 기술 스택이 발전함에 따라 유연성을 유지합니다.
- 일관된 데이터
- 통합된 공통 스키마로 더 쉽게 처리 및 분석을 유지관리합니다.
- 다양한 소스의 데이터에서 분석, 쿼리, 머신 러닝 등을 실행합니다.
OpenTelemetry를 사용하면 성장을 위한 확장성, 플랫폼 간 호환성, 기존 모니터링 및 통합 가시성 도구와의 손쉬운 통합이 가능합니다.
OpenTelemetry와 Elastic 통합
오랫동안 개방형 표준을 지지해 온 Elastic은 적극적인 기여와 협력을 통해 업계 전반에 OpenTelemetry 도입을 진전시키기 위해 최선을 다하고 있습니다.
Elastic Observability는 OpenTelemetry 데이터를 원활하게 통합하고 대규모 환경에서도 강력한 검색, 분석, 머신 러닝, 시각화 기능을 제공합니다. 2023년에 Elastic은 ECS를 OpenTelemetry에 제공하여 텔레메트리 데이터 형식을 통합하는 데 도움을 주었습니다.
Elastic Distributions of OpenTelemetry(EDOT)는 SRE와 개발자에게 안정적인 OTel 에코시스템을 제공합니다. Elastic의 OTel 우선 접근 방식은 OpenTelemetry 고유의 스키마 규칙을 유지하므로 스키마 변환이 필요하지 않습니다. EDOT에는 OTel 출시 주기 외의 수정 사항과 독점 추가 기능 없이 엔터프라이즈급 지원이 추가로 포함됩니다.
Elastic의 OpenTelemetry 우선 솔루션 살펴보기
OpenTelemetry 및 Elastic을 사용한 CI/CD 통합 가시성 사용 사례
Elastic은 Jenkins, Ansible, Maven과 같은 인기 있는 CI/CD Platform과 함께 작동하여 OpenTelemetry로 파이프라인을 계측합니다.
이를 통해 다음을 가능하게 합니다:
- 엔드 투 엔드 파이프라인 가시성
- 실시간 모니터링 대시보드
- 자동 경보 및 이상 징후 탐색
- 빌드/테스트 문제 해결 속도 향상
Elastic CI/CD 모니터링과 함께 OpenTelemetry를 사용하는 방법에 대한 설정 지침은 공식 설명서를 참조하시기 바랍니다.
OpenTelemetry FAQ
OpenTelemetry가 표준인가요?
예. OpenTelemetry는 오픈 소스 프로젝트이며 로그, 추적, 메트릭에 대한 통합 표준입니다.
원격 측정의 예는 무엇인가요?
원격 측정 데이터의 예로는 시스템 모니터링 및 통합 가시성에 사용되는 로그, 메트릭 및 추적이 있습니다.
OpenTelemetry 와 Jaeger의 차이점은 무엇인가요?
OpenTelemetry는 다양한 오픈 소스 및 상업용 백엔드로 데이터를 처리하고 내보낼 수 있도록 도와주지만, Jaeger와 같은 통합 가시성 백엔드는 아닙니다. OpenTelemetry는 텔레메트리 데이터를 생성하고 관리하는 데 도움이 되는 일련의 API, SDK, 도구를 제공하지만, Jaeger는 오픈 소스 분산 추적 도구입니다. IT 팀은 Jaeger를 사용하여 마이크로서비스 아키텍처를 기반으로 애플리케이션을 모니터링하고 문제를 해결합니다. Jaeger는 로그 및 메트릭을 지원하지 않습니다.
OpenTelemetry API와 SDK의 차이점은 무엇인가요?
OpenTelemetry API(애플리케이션 프로그래밍 인터페이스)는 시스템 전체에서 원격 측정 데이터 수집을 조정하고 코드를 계측합니다. API는 언어별로 다르므로 코드의 언어와 일치해야 합니다. OpenTelemetry SDK(소프트웨어 개발 키트)는 데이터 수집, 처리 및 통합 가시성 백엔드로 내보내기를 지원하는 라이브러리를 통해 API를 구현하고 지원합니다.
OpenTelemetry는 누가 개발했으며 그 이유는 무엇인가요?
OpenTelemetry는 텔레메트리 데이터의 수집 및 내보내기 방식을 통합하고 표준화하기 위해 클라우드 네이티브 컴퓨팅 재단(CNCF)에서 개발되었습니다. 이 프로젝트는 단편화를 없애기 위해 이전의 OpenTracing과 OpenCensus 프로젝트를 통합했습니다.
OpenTelemetry Protocol(OTLP)이란 무엇이며 왜 중요한가요?
OTLP는 OpenTelemetry의 기본 프로토콜로, 특정 벤더에 구애받지 않으며, 컴포넌트와 백엔드 간 텔레메트리 데이터를 전송합니다. 로그, 메트릭, 추적 등 모든 데이터가 일관된 형식으로 전송되므로 도구 간 통합이 더 간편하고 안정적으로 이루어집니다.
OpenTelemetry Collector란 무엇입니까?
OpenTelemetry Collector는 특정 벤더에 구애받지 않는 서비스로, 여러 소스에서 텔레메트리 데이터를 수신하여 처리(필터링, 집계, 변환)한 다음 하나 이상의 백엔드로 내보냅니다. 하나의 배포 환경에서 다양한 프로토콜과 형식을 지원합니다.
OpenTelemetry는 Elastic과 어떻게 통합됩니까?
타사 OTel 도구 또는 사용자 지정 프로세서와 내보내기를 사용하는 자체 OTel 수집기에서 OTel 고유의 추적, 로그, 메트릭을 Elastic으로 가져온 뒤 Elastic에서 분석 및 시각화할 수 있습니다. Elastic은 기본적으로 OpenTelemetry의 OTLP 데이터를 수집하고, 확장 가능한 검색, 인터랙티브 시각화, 실시간 모니터링, 머신 러닝 기반 이상 징후 탐색 등 고급 기능을 제공합니다. 스키마 변환이 필요하지 않습니다.
Elastic의 OpenTelemetry 리소스
- Elastic Distributions of OpenTelemetry(EDOT)
- Elastic APM에서 OpenTelemetry 시작하기
- 맞춤형 OpenTelemetry Collector 배포판 구축
- Elastic Stack과 함께하는 OpenTelemetry 계측
- SRE 관리자를 위한 OpenTelemetry 가이드
- 온디맨드 웨비나: 오픈 환경에서의 통합 가시성: 공공 부문을 위한 OTel
- OTel 및 Elastic을 사용한 공공 부문 통합 가시성