OpenTelemetry (OTel)는 분산 시스템(예: 마이크로서비스 아키텍처)에서 원격 측정 데이터를 수집, 처리, 내보내기 위한 공급업체에 중립적인 표준을 제공하는 오픈 소스 프로젝트입니다. 관찰성에 대한 이러한 단순하고 보편적인 접근 방식은 개발자가 소프트웨어의 성능과 동작을 더 쉽게 분석하여 애플리케이션의 문제를 보다 쉽게 진단하고 디버깅할 수 있도록 해줍니다. OTel은 다음과 같은 데이터를 수집합니다.
OTel은 프로그래밍 언어나 제품이 아닙니다. 이 오픈소스 프로젝트는 2019년부터 진행 중이며 현재 Cloud Native Computing Foundation (CNCF)에서 관리하고 있습니다.
시작하는 방법을 알아보려면 이 영상을 시청하세요.
추적은 단일 요청 처리 등의 작업 중에 발생하는 이벤트를 기록합니다. 추적은 일련의 스팬 으로 나뉘며, 각각은 작업 단위를 나타냅니다.
예를 들어, 웹 요청에 대한 추적에는 세 개의 span이 포함될 수 있습니다.
추적은 여러 서비스를 포함할 수 있는 데이터 흐름을 시간순으로 정렬된 일련의 청크로 나누어 쉽게 이해할 수 있도록 도와줍니다.
OTel이 추적 정보를 생성한 후 다음 단계는 이를 분석을 위해 추적 백엔드나 도구로 내보내는 것입니다. OTel은 Jaeger , Zipkin , AWS X‑Ray 와 같은 인기 있는 백엔드를 위한 일련의 내보내기 기능을 제공합니다. 이러한 서비스는 추적 데이터를 분석하고 시각화하는 도구를 제공합니다.
OTel에서 메트릭은 운영 체제 동작의 특정 측면을 측정한 것이며 키-값 쌍( 메트릭 레이블 이라고 함)으로 시간이 지남에 따라 수집됩니다. 키-값 쌍은 시간 경과에 따른 측정에 대한 맥락을 제공합니다. 예를 들어, 웹 서비스의 응답 시간에 대한 메트릭에는 HTTP 상태 코드, 엔드포인트, HTTP 메서드에 대한 레이블이 포함될 수 있습니다. 모든 지표에는 타임스탬프가 표시되어 시간순으로 정렬할 수 있습니다.
로그는 특정 서비스에서 무슨 일이 일어나고 있는지에 대한 통찰력을 얻는 가장 오래되고 가장 일반적인 방법입니다. 이러한 데이터는 일반적으로 텍스트로 생성되며, 통찰력을 얻으려면 구문 분석이 필요합니다. OTel의 로그 지원은 아직 실험 단계입니다.
OTel의 관찰 기능 세트를 다른 관찰 도구와 비교했을 때 솔루션 아키텍트가 발견한 사항에 대해 자세히 알아보려면 블로그에서 OpenTelemetry를 최신 앱 참조 아키텍처에 통합 - 진행 상황 보고서를 참조하세요.
OTel은 다양한 인기 있는 프로그래밍 언어 , 라이브러리, 프레임워크와 통합됩니다. 일부 언어에 대한 지원은 다른 언어에 비해 더 포괄적입니다. 예를 들어, JavaScript 계측 라이브러리는 추적 및 메트릭에 대해 자체적으로 "안정적인" 구현을 설명하고 로그에 대한 가장 안정적인 지원 중 일부를 제공합니다. 또한 서비스 로직에 계측 관련 코드를 추가하지 않고도 추적 수신을 시작할 수 있는 자동 계측 옵션도 제공합니다. 반면, Go 와 같은 언어는 메트릭과 로그에 대한 지원이 성숙하지 않았으며 자동 계측 기능이 부족합니다.
원격 측정 계측을 설정할 때는 "모든 것을 보내고 통찰력을 기대하는 것"보다 더 정의된 계측 목표 집합으로 시작하는 것이 가장 좋습니다. 데이터를 보기 전까지는 가능한 모든 것을 알 수 없다는 것은 사실이지만, 몇 가지 최소 요구 사항을 설정하면 서비스의 원활한 운영과 유지 관리를 보장하는 데 도움이 됩니다.
다음과 같은 기술적 문제가 있을 수 있습니다.
하지만 다음과 같은 제품 및 사용자 경험 관련 문제일 수도 있습니다.
마이크로서비스를 이해하기 위해 OpenTelemetry 추적을 사용하는 방법 튜토리얼의 예로 다음을 핵심 목표로 정의할 수 있습니다.
OTel은 개발자에게 일관되고 표준화된 방식으로 애플리케이션을 계측하는 데 사용할 수 있는 단일 애플리케이션 프로그래밍 인터페이스(API), 소프트웨어 개발 키트(SDK), 계측 라이브러리 세트를 제공합니다.
OTel이 생성하는 데이터 형식은 업계 표준으로 간주되므로 다양한 원격 측정 집계 및 시각화 솔루션에서 이를 수용합니다. Jaeger와 같은 온프레미스 솔루션을 선택할 수도 있고(이 튜토리얼에서 한 것처럼), SumoLogic 또는 SigNoz 와 같은 SaaS(Software-as-a-Service) 솔루션을 선택할 수도 있습니다.
세 가지 유형의 원격 측정을 모두 관리하기 위해 OTel을 대체할 수 있는 유일한 방법은 여러 도구를 결합하는 것입니다. 이는 마이크로서비스 아키텍처와 인프라를 운영하는 데 따른 본질적인 복잡성에 더해 더욱 복잡한 문제를 야기합니다.
API는 소프트웨어 구성 요소가 서로 상호작용하는 데 사용되는 메서드, 기능, 프로토콜을 정의합니다. OTel API는 개발자가 애플리케이션을 계측하고 원격 측정 데이터를 수집하는 데 사용할 수 있는 표준 메서드 및 프로토콜 세트를 정의합니다.
NGINX는 OTel에 대해 더 자세히 알아볼 수 있는 다음과 같은 추가 리소스를 제공하게 되어 자랑스럽게 생각합니다.