본문으로 건너뛰기

Tempo

Tempo는 Lumie의 트레이스 저장소입니다. Loki와 마찬가지로 내구성 있는 장기 보존보다는 단기 운영 가시성에 최적화되어 있습니다.

소스 경로

  • lumie-infra/observability/tempo/argocd.yaml
  • lumie-infra/observability/tempo/helm-values.yaml
  • lumie-infra/observability/opentelemetry/manifests/collector.yaml

런타임 계약

  • 차트: grafana/tempo
  • replica: 1
  • 스토리지 백엔드: 로컬 파일시스템
  • persistence: 비활성화
  • 보존: 72h
  • OTLP 수신기는 4317, 4318에 노출
  • metrics generator: 비활성화

메트릭 생성이 비활성화된 이유

metricsGenerator.enabled: false는 의도적입니다. values 파일은 이전에 remote write 실패가 Tempo WAL 증가와 OOM 상태를 유발했다고 적고 있어, Lumie는 더 넓은 수집 경로가 바뀌기 전까지 trace-derived metrics를 끈 상태로 유지합니다.

런타임 흐름

운영 경계

  • Tempo는 내부 전용이며, 사람이 보통 사용하는 인터페이스는 Grafana입니다.
  • 데이터는 emptyDir/var/tempo 아래에 있으므로 pod 교체 시 trace 이력이 사라집니다.
  • GOMEMLIMIT은 pod 메모리 상한 아래에서 Go GC 동작을 유지하도록 Helm values에 고정되어 있습니다.

장애 지점

  • pod 재시작이나 노드 대피 시 로컬 trace 이력이 사라집니다.
  • collector에서 tempo.tempo.svc.cluster.local:4317로의 exporter가 깨지면 서비스는 계측된 채로 남아도 Grafana에 trace가 나타나지 않습니다.
  • 운영자가 trace-derived metric을 기대하더라도 metrics generator가 명시적으로 꺼져 있으므로 보이지 않습니다.

검증

kubectl get applications.argoproj.io -n argocd tempo
kubectl get pods -n tempo
kubectl describe pod -n tempo tempo-0
kubectl logs -n opentelemetry daemonset/otel-collector-collector --tail=200

관련 페이지