跳轉到

OpenTelemetry Trace Pipeline

概念概覽

Trace Transport 常見斷點

核心知識

Trace Transport 常見斷點

# 錯誤:指向本地(dev 環境常見錯誤)
OTEL_EXPORTER_OTLP_ENDPOINT: "localhost:4318"

# 正確:指向叢集內 Tempo
OTEL_EXPORTER_OTLP_ENDPOINT: "tempo.monitoring:4318"

game-server、publisher、admin 三個服務各自需要確認 configmap 是否正確,不能只改其中一個。

Correlation Contract 標準欄位

以下欄位必須**同時**出現在 response headers、app logs、spans、audit logs:

request_id, trace_id, span_id,
user_id, account_id, session_id,
rpc/service, build_sha, config_version, env

任何一層缺少這些欄位,跨系統問題診斷時就必須靠肉眼拼湊。

多環境 Tracing 策略

  • dev / staging / prod 共用同一個 Tempo cluster
  • 每條 span 加 environment label(dev / staging / prod
  • Grafana 用 dashboard variable 過濾,避免混看
  • 不需要部署三套 Tempo,節省維護成本

經驗教訓

  • Trace transport 是最大單點阻塞:endpoint 指向 localhost 讓整個 dev tracing 完全不可靠,但修復只是改一行 config

  • Admin tracing 不是純 Infra 問題:configmap 要改,server code 的 middleware chain 也必須補 tracing middleware

常見陷阱

  • 只改了 configmap 但忘記 middleware chain 沒有掛 tracing middleware,trace 仍然不會產生

  • 多環境共用 Tempo 但忘記在 query 加 environment filter,會看到混合資料

最佳實踐

  • 所有服務的 OTEL endpoint 統一指向叢集內 tempo service,而非 localhost

  • Correlation ID 欄位要在 structured log schema 設計期就確定,後期補加會需要重構

相關概念

來源 Sessions

日期 Session 貢獻摘要

| 2026-03-24 | 6295486a-8e60-49c7-a5da-f375c806641a | 定義 Go 遊戲後端完整的 Trace 傳輸鏈路修正方案,以及 Correlation Contract 的標準欄位清單 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-03-24