平台與維運 2026 年 10 月 4 日

2026-10-04 — Tempo 3.1 預設 vParquet5,拒絕寫入 vParquet3

primary=https://grafana.com/blog/tempo-3-1-release-all-the-latest-features/ primary=https://grafana.com/docs/tempo/latest/release-notes/v3-1/

Tempo 3.1 預設 vParquet5,拒絕寫入 vParquet3

Grafana 官方部落格 · 2026-09-30

Grafana Tempo 3.1 把新 block 的預設格式改成 vParquet5,同時對仍設定寫入 vParquet3 的部署直接拒絕啟動,把先前宣告的棄用變成強制。這個版本也讓 tempo-cli redact 能用 TraceQL 查詢一次塗銷多條 trace,但搭配時間區間使用時有一個不可回復的升級陷阱。

原本的問題

Tempo 的 block 格式長期並存多個 vParquet 版本,升級時要自己確認設定。vParquet5 在 Tempo 2.10 只是 opt-in,所以許多叢集沒有動它,也就拿不到後續建立在它之上的查詢優化。

另一個痛點在隱私。trace 裡混進個資(例如某個 span attribute 洩漏了 PII)時,舊流程要先找出所有受影響的 trace ID,再逐一塗銷,人工列舉很容易漏。

核心改動

release notes 指出:Tempo 3.1 強制執行棄用,設定為寫入 vParquet3 時拒絕啟動。新 block 預設寫成 vParquet5,既有的 vParquet4 block 仍可讀取,不需要遷移。

vParquet5 預設化帶來 span-only fetch:對不需要完整 trace 結構的 metrics 查詢,只處理個別 span。官方部落格稱簡單查詢「close to twice as fast」,此路徑對 vParquet5 預設開啟,可依租戶或單一查詢關閉(PR #7179)。

塗銷方面,tempo-cli redact 現在接受 --query,並有 --dry-run 與 --start/--end(PR #7663、PR #7702)。查詢限單一 spanset filter,只能對 resource.* 與 span.* 屬性做等號比較,可用 &&、|| 組合。

項目舊做法3.1
塗銷範圍逐一提供 trace ID--query '{span.attribute = "<leaked_PII>"}'
寫入格式可設 vParquet3設 vParquet3 則拒絕啟動
新 block 預設需 opt-in vParquet5vParquet5

影響範圍

設定檔仍寫 vParquet3 的人,升級前必須先改成 vParquet5 或 vParquet4,否則 Tempo 起不來。

release notes 另外列出三個會改變行為的預設:

  • max_grpc_streaming_packet_size 預設由 2 MiB 降為 1 MiB,依賴較大串流回應的用戶要明確設定。
  • trace-by-ID 查詢改用 blocks_per_shard(預設 30),取代固定的 query_shards;要保留舊行為請設 blocks_per_shard: 0。
  • 實驗性的 Redis cache client 改寫:預設 Redis Cluster、移除 Sentinel、YAML key 更名;沒用 Redis 快取就不受影響。

最危險的是塗銷。只有在每個 scheduler 與 worker 都升到 3.1 之後,才能送出帶 --start/--end 的塗銷。官方說明舊版 worker 會忽略時間視窗,把所有符合查詢的資料都塗銷,造成無法回復的資料遺失。滾動升級期間,有人用 CI 或排程跑 tempo-cli redact 的團隊,要先確認叢集版本一致。

tempo-cli redact --query '{span.attribute = "<leaked_PII>"}' --start now-7d --dry-run

這個指令是依官方部落格的參數組出的示意,先加 --dry-run 驗證比對範圍,再正式執行。release notes 未說明正式發布日期。

其他值得一提的新功能

Kafka client 新增 TLS 與 SCRAM-SHA-256、SCRAM-SHA-512、OAUTHBEARER、AWS_MSK_IAM(PR #7586),以及 producer_compression 選項,讓只接受 gzip 的 Azure Event Hubs 可用(PR #7691)。TraceQL metrics 則能在兩個查詢之間做 +、-、*、/,例如 ({ status = error } | rate()) / ({ } | rate()) 一條查詢就得到錯誤率(PR #6866)。

原始來源:Grafana 部落格、Tempo 3.1 release notes


End of article
0
Would love your thoughts, please comment.x
()
x