Jaeger와 분산 추적 시스템에 대한 종합 가이드

Jaeger는 복잡한 MSA 환경에서 성능 문제와 오류를 효과적으로 추적하고 분석할 수 있게 도와주는 분산 추적 시스템입니다. Uber Technologies에서 개발되어 오픈소스로 공개된 Jaeger는 개발자들에게 시스템 전체에서의 데이터 흐름과 트랜잭션을 시각적으로 파악할 수 있는 강력한 도구를 제공합니다.

Jaeger와 분산트레이싱

현대의 애플리케이션은 더 이상 단순한 모노리식 구조로 이루어져 있지 않습니다. 마이크로서비스, 서버리스 아키텍처, 클라우드 네이티브 애플리케이션과 같은 다양한 현대적 기술은 기업들에게 유연성과 확장성을 제공하지만, 동시에 디버깅과 모니터링의 복잡성을 높이는 원인이 되기도 합니다. 이러한 복잡한 분산 시스템에서 문제점을 파악하고 분석하는 것은 마치 바늘을 찾는 것과 같습니다. 본 글에서는 Jaeger의 핵심 원리와 기능을 탐구하며, 실제 환경에서의 활용 방안과 베스트 프랙티스를 함께 살펴봅니다.

분산 추적 시스템이란 무엇입니까?

분산 추적 시스템은 복잡한 분산 시스템을 모니터링하고 문제를 해결하는 데 중요한 도구입니다. 다양한 서비스 전반의 트랜잭션을 추적하여 분산 소프트웨어 시스템에서의 성능에 대한 통찰력을 제공합니다. 분산 추적은 마이크로서비스 아키텍처를 사용하여 구축된 애플리케이션에 특히 유용하며, 오류가 발생한 위치를 정확히 찾아내고 애플리케이션 성능 저하의 원인을 식별하는 데 도움이 됩니다. 애플리케이션을 프로파일링하고 모니터링하는 데 사용되는 방법을 분산 추적이라고 하며, 이는 애플리케이션의 여러 분산 구성 요소를 통해 트랜잭션을 추적합니다. 분산 추적 시스템의 핵심 구성 요소에는 계측, 추적 수집, 추적 분석 및 시각화가 포함됩니다. Trace ID와 같은 고유 식별자는 각 거래에 태그를 지정하는 데 사용되며 거래의 타임라인은 시스템에 의해 구축됩니다.

고유 식별자를 사용

시스템은 고유 식별자를 사용하여 애플리케이션의 다양한 구성 요소에서 각 추적을 통합하여 사용자 요청이 여러 서비스에서 수행되는 방식에 대한 중앙 개요를 제공합니다. 분산 추적은 마이크로서비스 기반 아키텍처의 애플리케이션 성능 모니터링에 매우 중요하며 분산 추적에는 다양한 솔루션을 사용할 수 있습니다. 하나를 선택하기 전에 해당 아키텍처와 이점을 살펴보는 것이 중요합니다 . 분산 추적을 통해 개발자는 요청이 여러 서비스를 통해 이동할 때 요청을 추적하고 시스템 동작에 대한 가시성을 제공할 수 있습니다 . 병목 현상을 식별하고 성능을 향상시키는 데 도움이 될 수 있습니다. 널리 사용되는 분산 추적 도구로는 분산 추적 기능을 제공하는 Jaeger 및 Datadog APM이 있습니다. 분산 추적, 브라우저 세션, 로그, 프로필, 네트워크, 프로세스 및 인프라 측정항목을 연관시키면 시스템 성능 및 동작에 대한 포괄적인 보기를 제공할 수 있습니다.

Jaeger란 무엇이며 분산 추적 시스템 환경에 어떻게 적합합니까?

Jaeger(예거)는 분산 시스템에서 트랜잭션을 모니터링하고 문제를 해결하는 데 사용되는 오픈 소스 분산 추적 도구입니다. 예거는 Uber 팀에 의해 구축되었으며 2017년부터 CNCF(Cloud Native Computing Foundation) 대학원 프로젝트였습니다. 처음에는 엔지니어가 Uber의 마이크로서비스 아키텍처를 모니터링하고 문제를 해결하는 데 도움을 주기 위해 설계되었으며 나중에 2015년에 오픈 소스로 제공되었습니다. 예거는 분산 추적을 위한 유명한 도구이며 정확한 서비스 성능 지표를 제공합니다. 분산 추적, 브라우저 세션, 로그, 프로필, 네트워크, 프로세스 및 인프라 측정항목을 상호 연결하는 다른 도구와 함께 분산 추적 시스템 환경의 구성 요소로 사용할 수 있습니다.

모니터링 데이터의 장기 저장 및 분석을 제공

Jaeger는 TimescaleDB의 일부인 시계열 데이터베이스인 Promscale에 추적을 저장하도록 설계되었으며 모니터링 데이터의 장기 저장 및 분석을 제공합니다. 예거에는 UDP를 통해 전송된 범위를 수신하는 네트워크 데몬인 에이전트가 포함되어 있습니다. 에이전트는 클라이언트에서 수집기의 라우팅 및 검색을 추상화하여 모든 호스트에 인프라 구성 요소로 쉽게 배포할 수 있도록 합니다. 예거는 추적 검증, 인덱싱 및 변환을 위한 수집기를 제공합니다. 그런 다음 이러한 추적은 jaeger-all-in-one 서비스로 전송되어 예거 UI에 저장되고 분석될 수 있습니다. 예거 UI에는 수집된 추적에서 집계된 RED 지표에 쉽게 액세스할 수 있는 새로운 SPM(서비스 성능 모니터링) 기능이 있습니다.

OpenTelemetry를 지원 지원합니다

Jaeger는 OpenTelemetry를 기본적으로 지원합니다. 즉, 예거의 SPM 기능을 위한 메트릭 스토리지 백엔드로 사용할 수 있습니다. 이미 OpenTelemetry Collector를 사용하고 있는 환경에서 예거를 활성화하려면 구성하는 데 10분 이상 걸리지 않습니다. 예거는 UI의 추적 탭을 통해 자세한 추적 및 분석 기능을 제공하여 분산 시스템 문제 해결에 선호되는 선택입니다. 여러 프로그래밍 언어로 된 공식 클라이언트 라이브러리를 갖춘 예거는 엔지니어링 팀이 문제를 빠르고 효율적으로 해결하는 데 도움을 줄 수 있는 강력한 분산 추적 시스템입니다.

Jaeger의 주요 구성 요소는 무엇입니까?

Jaeger의 아키텍처는 몇 가지 주요 구성 요소로 구성됩니다. 수집기는 계측된 서비스로부터 추적 데이터를 수신하고 이를 스토리지 백엔드로 전달하는 일을 담당합니다. 선택 사항인 에이전트는 계측된 서비스와 함께 실행되고 추적 데이터를 수집기에 전달하는 경량 데몬입니다. 쿼리 서비스는 추적 검색 및 가져오기를 위한 상위 수준 API를 제공하며, 저장소 백엔드에 연결하여 추적 데이터를 검색합니다. 스토리지 백엔드는 나중에 쿼리 서비스를 통해 검색할 수 있도록 추적 데이터를 저장합니다. 예거는 대규모 분산 시스템을 처리하도록 설계되었으며 고가용성 옵션을 제공합니다.

수평 확장성을 지원합니다

Jaeger는 수평 확장성도 지원합니다. 즉, 대규모 추적 데이터를 처리할 수 있습니다. 서비스 수가 증가하고 있습니다 . 예거 UI는 대기 시간, 오류율, 요청 비율을 측정하는 세 가지 서비스 수준 그래프는 물론 선택한 서비스에 대한 작업별 지표를 포함하여 다양한 방법으로 지표를 제공합니다. 예거에는 널리 사용되는 로깅 프레임워크와의 통합도 포함되어 있어 사용자가 추적 정보를 로그와 연관시킬 수 있습니다. Jaeger는 Elasticsearch 스토어를 갖춘 분산 추적 솔루션을 보유하고 있으며 예거 UI를 통해 사용자는 쿼리 서비스를 사용하여 추적을 검색하고 시각화할 수 있습니다. 쿼리 서비스에 대한 적절한 인증 및 액세스 제어가 이루어져야 하며 스토리지 백엔드와 연결되도록 구성되어야 합니다. 쿼리 서비스를 통해 사용자는 예거 UI를 사용하여 추적을 검색하고 시각화할 수 있습니다. 전반적으로 예거의 주요 구성 요소에는 수집기, 에이전트, 쿼리 서비스, 스토리지 백엔드 및 예거 UI가 포함됩니다.

참조

  1. signoz.io/blog/distributed-tracing-jaeger/
  2. dzone.com/articles/distributed-tracing-a-full-guide
  3. logz.io/blog/distributed-tracing-dapper-jaeger/

Leave a Comment