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