Skip to main content

Observability Stack

Unified Pipeline Overview

                    ┌─────────────────┐
│ OTel Collector │
│ contrib v0.115.0 │
│ (DaemonSet) │
└────────┬────────┘

┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ Traces │ │ Logs │ │ Metrics │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
┌─────────┤ ┌────┤ │
│ │ │ │ │
┌───▼───┐ ┌──▼──┐ ┌───▼──┐ ┌▼────────┐ ┌──▼────────┐
│ Click │ │Tempo│ │X-Ray │ │CW Logs │ │Prometheus │
│ House │ │ │ │ │ │ │ │ │
└───┬───┘ └──┬──┘ └──────┘ └─────────┘ └──┬────────┘
│ │ │
└────────┴──────────┬───────────────────┘
┌────▼────┐
│ Grafana │
└─────────┘

OTel Collector

속성
ImageOTel Collector Contrib v0.115.0
DeploymentDaemonSet (Kustomize + Helm ApplicationSet)
IRSAproduction-otel-collector-[region]

Receivers

  • OTLP: gRPC (:4317), HTTP (:4318)
  • filelog: 컨테이너 로그 수집 (FluentBit 대체)
  • k8s_events: Kubernetes 이벤트

Processors

  • batch: 배치 처리로 효율 향상
  • k8sattributes: Pod metadata 자동 첨부
  • spanmetrics connector: span에서 metric 생성 (exemplar with trace_id)

Exporters

SignalDestinations
TracesClickHouse + Tempo + AWS X-Ray (3중 출력)
LogsClickHouse + CloudWatch Logs
MetricsPrometheus (via spanmetrics)

ClickHouse

속성
OperatorAltinity ClickHouse Operator v0.24.1
Serverclickhouse-server:24.8
Topology1 shard / 1 replica
Storage50Gi gp3
Namespaceobservability
Endpointclickhouse-clickhouse.observability:9000 (tcp) / :8123 (http)

Schema

TableEngineTTL
otel.otel_tracesMergeTree30 days
otel.otel_logsMergeTree30 days

Tempo

속성
Versionv2.6.1 monolithic mode
BackendS3 (IRSA + 전용 버킷)
tracesToLogsClickHouse datasource (filterByTraceID + filterBySpanID)
Config$VAR expansion via -config.expand-env=true
Tempo 주의사항
  • Tempo ConfigMap은 ${VAR} 환경변수 확장을 사용 — Pod에 env var 설정 필수
  • Tempo AppSet이 kustomization.yaml에 누락되기 쉬움 — 확인 필요

Prometheus + Grafana

속성
Stackkube-prometheus-stack Helm v68.4.0
Exemplarsexemplar-storage enabled
Grafana Pluginsgrafana-clickhouse-datasource
DatasourcesPrometheus, ClickHouse, Tempo

Exemplar Flow

Metric graph → Click exemplar point → Trace in ClickHouse → Correlated logs

exemplarTraceIdDestinations가 ClickHouse datasource를 가리키고, Tempo의 tracesToLogs도 ClickHouse를 참조하여 metric → trace → log 전체 연결을 달성합니다.

StorageClass 주의

Prometheus StatefulSet의 VolumeClaimTemplate은 immutable입니다. storageClassName 변경 시 STS + PVC를 삭제 후 재생성해야 합니다. Grafana PVC는 standalone PVC(Deployment)로 별도 관리.