Part 6: 분산 추적 분석
난이도: 고급 (Advanced) 예상 소요 시간: 45분 마지막 업데이트: 2026년 2월 23일
학습 목표
Tempo + Grafana를 사용한 end-to-end 트레이스 분석
서비스 간 병목 구간 식별
Loki와 Tempo 상관관계 분석
Exemplar를 통한 메트릭에서 트레이스 drill-down
분석 워크플로우
Step 6.1: TraceQL 트레이스 검색
TraceQL 기본 문법
{}
모든 트레이스
{}
{ .attr = "value" }
속성 필터
{ .service.name = "order-service" }
{ status = error }
상태 필터
{ status = error }
{ duration > 1s }
시간 필터
{ duration > 2s }
&&
AND 조건
{ .service.name = "api-gateway" && status = error }
||
OR 조건
{ status = error || duration > 5s }
주요 검색 쿼리
서버 에러 (5xx)
{ status = error && .http.status_code >= 500 }
Order Service 느린 응답
{ .service.name = "order-service" && duration > 1s }
DB 쿼리 지연
{ .db.system = "postgresql" && duration > 500ms }
SQS 발행 지연
{ .messaging.system = "aws_sqs" && .messaging.operation = "publish" && duration > 200ms }
특정 고객 요청
{ .customer_id = "customer-001" }
에러 트레이스 (전체)
{ status = error }
Step 6.1.1: Grafana Explore에서 TraceQL 실행
Step 6.1.2: 에러 트레이스 검색
Grafana Explore에서:
Datasource: Tempo 선택
Query type: TraceQL 선택
Query:
Step 6.1.3: 느린 요청 검색
Step 6.1.4: 복합 조건 검색
Step 6.2: 서비스 그래프 (Service Graph)
Tempo Service Graph 활성화
Service Graph는 Tempo의 메트릭 생성기(metrics-generator)를 통해 생성됩니다.
Step 6.2.1: 서비스 그래프 확인
Grafana에서:
Explore > Tempo 선택
Service Graph 탭 클릭
서비스 간 연결 관계 확인
서비스 그래프 해석
녹색
정상 (에러율 < 1%)
노란색
경고 (에러율 1-5%)
빨간색
위험 (에러율 > 5%)
가는 선
낮은 트래픽
두꺼운 선
높은 트래픽
Step 6.2.2: 서비스 그래프 메트릭
Step 6.3: 지연 구간 식별 워크플로우
분석 단계
1. 트레이스 선택
느린 또는 에러 트레이스 선택
TraceQL
2. Span 분석
타임라인에서 각 span 시간 확인
Tempo UI
3. 병목 분류
어떤 유형의 작업인지 분류
Span attributes
4. 근본 원인 식별
로그, 메트릭과 연계하여 원인 파악
Loki, Prometheus
Span 유형별 병목 분류
HTTP Client
외부 서비스 응답 지연
.http.url, duration
Database
쿼리 최적화 필요, 인덱스 부재
.db.statement, duration
Message Queue
큐 지연, 처리 지연
.messaging.destination, duration
Internal
코드 로직, CPU 바운드
span gap 분석
Step 6.3.1: 느린 트레이스 분석
Grafana에서 트레이스 선택 후:
Trace 타임라인 확인
가장 긴 span 식별
Span Details 패널에서 attributes 확인
Step 6.3.2: 병목 구간 파악
예시 트레이스 분석:
분석 결과:
병목:
order-service(2.4s 중 전체의 96%)근본 원인: DB 쿼리 (1.8s) - customer_id 인덱스 필요
Step 6.4: Loki와 Tempo 상관관계
Logs → Traces 연동
Loki 로그에서 TraceID를 추출하여 Tempo 트레이스로 이동합니다.
Step 6.4.1: Loki Derived Fields 설정
Grafana Datasource 설정에서 이미 구성됨:
Step 6.4.2: Loki에서 에러 로그 검색
로그 라인의 TraceID 링크 클릭 → Tempo 트레이스로 이동
Traces → Logs 연동
Step 6.4.3: Tempo에서 관련 로그 조회
Tempo에서 트레이스 선택
Span 선택
Logs for this span 클릭
Loki에서 해당 시간 범위 + TraceID로 로그 검색
자동 생성되는 Loki 쿼리:
Step 6.5: Exemplar 활용
Exemplar는 메트릭 데이터 포인트에 연결된 트레이스 ID로, 집계된 메트릭에서 개별 트레이스로 드릴다운할 수 있게 합니다.
Exemplar 워크플로우
Step 6.5.1: Exemplar가 있는 메트릭 쿼리
Step 6.5.2: Grafana에서 Exemplar 확인
Time series 패널에서 Exemplars 옵션 활성화
그래프 위의 다이아몬드(◇) 마커 확인
마커 위에 마우스 올리면 TraceID 표시
클릭하면 Tempo 트레이스로 이동
Step 6.5.3: Exemplar 저장 Prometheus 설정 확인
Step 6.6: 종합 대시보드 구성
대시보드 패널 구성
RED Overview
서비스 상태 요약
Rate, Errors, Duration
SLI/SLO
서비스 수준 목표
Availability, Latency SLOs
Infrastructure
인프라 상태
Node/Pod CPU, Memory
Traces
트레이스 분석
Service Graph, Recent Traces
Step 6.6.1: RED Overview Dashboard
Step 6.6.2: SLI/SLO Dashboard
Step 6.6.3: Dashboard Import
Step 6.7: 정리 (Cleanup)
전체 실습 리소스를 정리합니다.
정리 순서
1
MSA 애플리케이션
ArgoCD에서 삭제
2
Observability 스택
Helm uninstall
3
KEDA, Karpenter
Helm uninstall
4
AWS Managed Services
Terraform destroy
5
EKS 클러스터
eksctl delete
Step 6.7.1: MSA 애플리케이션 삭제
Step 6.7.2: Observability 스택 삭제
Step 6.7.3: Service Cluster 컴포넌트 삭제
Step 6.7.4: AWS Managed Services 삭제
Step 6.7.5: EKS 클러스터 삭제
Step 6.7.6: IAM 리소스 정리
정리 확인
검증 (Verification)
Full Drill-down 테스트
메트릭 → Exemplar → 트레이스 → 로그 전체 흐름 확인:
검증 체크리스트
TraceQL 검색
{ status = error }
에러 트레이스 목록
Service Graph
Tempo > Service Graph
서비스 연결 그래프
Logs → Traces
Loki에서 TraceID 클릭
Tempo 트레이스 표시
Traces → Logs
Tempo에서 Logs 버튼
Loki 로그 표시
Exemplar
메트릭 그래프 ◇ 클릭
Tempo 트레이스 표시
리소스 정리
AWS Console 확인
모든 리소스 삭제 완료
실습 완료
축하합니다! Observability End-to-End 실습 시리즈를 모두 완료했습니다.
학습 내용 요약
1
인프라 구성
EKS, Terraform, eksctl
2
Observability 스택
OTel, Prometheus, Loki, Tempo
3
MSA 배포
ArgoCD, Argo Rollouts, KEDA
4
부하 테스트
k6, Karpenter, 스케일링
5
알림 및 AIOps
AlertManager, Bedrock, Lambda
6
분산 추적
TraceQL, Exemplar, Correlation
다음 단계 권장
프로덕션 적용: 학습한 내용을 실제 프로덕션 환경에 적용
커스텀 대시보드: 조직의 SLO에 맞는 대시보드 구성
알림 튜닝: 노이즈 감소를 위한 알림 임계값 조정
AIOps 확장: 멀티 에이전트 패턴으로 AIOps 고도화
참조 문서
시리즈 목차
Part 6: 분산 추적 분석 (현재 문서)
마지막 업데이트