분산 추적
분산 추적 (Distributed Tracing)
Linkerd 프록시에서 추적 스팬(trace span)을 내보내 분산 시스템의 성능, 특히 병목 지점과 각 컴포넌트의 지연 비용을 파악하는 방법을 소개해요.
본문
추적은 분산 시스템의 성능 디버깅에 매우 귀중한 도구가 될 수 있습니다. 특히 병목 지점을 식별하고 시스템의 각 컴포넌트가 얼마나 오래 걸리는지 이해하는 데 유용하죠. Linkerd는 프록시에서 추적 스팬을 내보내도록 구성할 수 있어서, 요청과 응답이 내부에서 보내는 정확한 시간을 볼 수 있어요.
대부분의 Linkerd 기능과 달리, 분산 추적은 코드 변경과 구성이 모두 필요합니다. (서비스 메시에서의 분산 추적: 네 가지 오해에서 그 이유를 읽어볼 수 있어요.)
게다가 Linkerd는 분산 추적과 자주 연관되는 다음 기능들을 구성이나 애플리케이션 변경 없이 많이 제공합니다:
- 실시간 서비스 토폴로지와 의존성 그래프
- 집계된 서비스 상태, 지연, 요청 볼륨
- 집계된 경로/라우트 상태, 지연, 요청 볼륨
예를 들어 Linkerd는 분산 추적이나 그런 애플리케이션 수정 없이도 서비스의 모든 인바운드·아웃바운드 의존성의 실시간 토폴로지를 표시할 수 있어요. 자동 생성된 토폴로지 그래프를 보여주는 Linkerd 대시보드 마찬가지로 Linkerd는 서비스별, 라우트별 골든 메트릭을 역시 분산 추적이나 그런 애플리케이션 수정 없이 제공합니다. 자동 생성된 라우트 메트릭을 보여주는 Linkerd 대시보드
분산 추적 사용하기
그래도 분산 추적에는 분명 쓰임새가 있고, Linkerd는 그것을 가능한 한 쉽게 만듭니다. 분산 추적에서 Linkerd의 역할은 사실 아주 간단해요. Linkerd 데이터 플레인 프록시가 프록시된 HTTP 요청에서 추적 헤더를 보면, Linkerd는 그 요청에 대한 추적 스팬을 내보냅니다. 이 스팬은 Linkerd 프록시에서 보낸 정확한 시간에 대한 정보를 포함합니다. 이 정보를 수집·저장·분석하는 소프트웨어와 짝지으면, 메시의 동작에 대한 상당한 통찰을 제공할 수 있어요.
이 기능을 사용하려면 시스템에 몇 가지 추가 컴포넌트를 도입해야 합니다. 특정 요청에 추적을 시작하는 인그레스 레이어, 애플리케이션용 클라이언트 라이브러리(또는 추적 헤더를 전파하는 메커니즘), 스팬 데이터를 수집해 추적으로 만드는 트레이스 컬렉터, 그리고 추적 데이터를 저장하고 사용자가 보고/질의하게 해주는 트레이스 백엔드가 필요해요.
자세한 내용은 Linkerd로 애플리케이션에 분산 추적을 추가하는 가이드를 참고하세요.
더 알아보기 (Learn more)
- Linkerd로 분산 추적 추가하기 가이드
- 서비스 메시에서의 분산 추적: 네 가지 오해