인포그랩
home
회사 소개
home

Tempo 구축하기

소개

트레이스(Trace)는 시스템, 소프트웨어 응용 프로그램 또는 사용자의 이벤트 또는 활동이 시간 순서대로 기록된 정보를 나타냅니다. 애플리케이션이 단일 데이터베이스가 있는 모놀리식이든 여러 서비스가 있는 분산 시스템이든 관계없이 애플리케이션에서 요청이 취하는 전체 "경로"를 이해하려면 트레이스가 필수적입니다.
메트릭(Metric)과 로그(Log)은 특정 시스템 내부에서의 동작을 볼 수 있지만, 분산 시스템에서의 문제 해결에는 부족합니다. 이러한 이유로 트레이스가 필요하며, 이는 디버깅, 성능 분석 및 다양한 시나리오에서의 애플리케이션 동작 이해와 같은 다양한 목적으로 사용될 수 있습니다.
Tempo는 Grafana Labs에서 개발한 오픈 소스 분산 추적 백엔드(distributed tracing backend)입니다. 이는 매우 효율적이고 확장 가능한 방식으로 트레이스 데이터를 저장, 인덱싱 및 검색하기 위해 설계되었습니다. Tempo는 Grafana 옵저버빌리티(Observability) 스택의 일부이며, Grafana, Prometheus 및 Loki와 긴밀하게 통합됩니다.
학습의 결과로 Tempo를 Kubernetes 클러스터에 배포합니다. 이후 이를 이용하여 Kubernetes 클러스터에서 실행되는 애플리케이션을 모니터링하기 위해 트레이스 데이터를 수집하고 검색할 수 있습니다. 또한 Grafana Observability Stack의 일부인 트레이스 기능을 담당하는 데 사용할 수 있습니다.

Tempo란?

Grafana Tempo는 사용하기 쉬운 오픈소스 대규모 분산 추적 백엔드입니다. Tempo는 비용 효율적이며 작동하는 데 오브젝트 스토리지만 필요합니다. Jaeger, Zipkin 또는 OpenTelemetry를 포함한 오픈 소스 추적 프로토콜과 함께 Tempo를 사용할 수 있습니다.
Tempo는 LogQL과 PromQL에서 영감을 얻은 추적 우선 쿼리 언어인 TraceQL을 구현합니다. 이 쿼리 언어를 사용하면 사용자는 매우 정확하고 쉽게 스팬(Span)을 선택하고 지정된 조건을 충족하는 스팬으로 바로 이동할 수 있습니다.

학습 내용

Tempo Helm 차트 리포지터리를 구성하는 방법
Tempo Helm 차트의 구성 정보를 배포 환경에 맞게 설정하는 방법
Helm 차트로 Tempo를 배포하고 확인하는 방법
Tempo와 Grafana를 연동하는 방법

아키텍처

사전 준비사항

기본 요건

Kubernetes에 대한 기본 개념
Helm, kubectl에 대한 기본 개념
트레이스에 대한 기본 개념

필요 항목

Tempo를 배포할 Kubernetes 클러스터가 구축되어 있어야 합니다.
트레이스 데이터를 저장하는 오브젝트 스토리지로 사용할 MinIO가 구축되어 있어야 합니다.
Tempo와 연동할 Grafana가 구축되어 있어야 합니다.