ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Grafana Tempo 1.3 版本发布全解析:后端搜索、Ring 自愈与升级迁移指南

Grafana Tempo 1.3 版本发布全解析:后端搜索、Ring 自愈与升级迁移指南 Grafana Tempo 1.3 版本发布全解析后端搜索、Ring 自愈与升级迁移指南【免费下载链接】tempoGrafana Tempo is a high volume, minimal dependency distributed tracing backend.项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempoGrafana Tempo 1.3 是分布式追踪后端在可观测性能力上的重要版本它首次将搜索能力从近期 trace扩展到后端对象存储中的历史数据同时通过 compactor ring 自动遗忘、超大 trace 保护机制、新增运维指标与 Azure 环境变量凭证等改进显著提升了系统的可运维性与健壮性。阅读本文后你将完整掌握 Tempo 1.3 的核心特性原理、四个新增指标在源码中的实现位置、升级到 v1.3 时需要注意的全部破坏性变更OTLP 端口迁移、配置项重命名、API 移除以及 1.3.1 / 1.3.2 两个补丁版本修复的关键缺陷。特性与增强Features and enhancements后端存储搜索Backend store search此前 Tempo 只支持对 ingester 中近期 trace的搜索从 1.3 开始搜索能力正式扩展到**后端存储backend store**中的历史数据用户可以在更大的时间范围内检索已落盘的 trace。这一能力在后续版本中持续演进为完整的读路径架构查询由 query-frontend 分片shard为多个 jobquerier 作为 worker 从队列中领取 job 批量执行再返回结果由 query-frontend 合并去重。搜索的所有 block 都需要vParquet块格式支持在 Tempo 3.0 中 v2 块格式已被移除。注意1.3 发布时Grafana 尚未支持用于开启后端数据存储搜索的tempoBackendSearch功能开关详见下文已知问题。搜索的具体配置与调优方法可参考 Tempo search 使用文档 与 搜索性能调优指南。Compactor Ring 自动遗忘不健康成员Compactor ring 增加了自动遗忘auto-forget不健康 ring 成员的功能。在分布式部署中compactor 节点通过 hash ring 协调压缩任务若某个成员长期不健康且不主动退出会导致任务分配失衡。1.3 之后 ring 会自动将这些不健康成员从 ring 中移除避免它们持续占据 token 空间、降低压缩任务分配的均匀性。这与 Tempo 的 ring 心跳 / 健康检查机制相配合节点心跳超时后进入 unhealthy 状态再由 ring 自动清理。相关 ring 配置如heartbeat_timeout位于 modules/ring/config.go。保护实例免受超大 trace 影响Ingester 现在会持续跟踪超过配置最大大小的 trace将超大 trace 的保护范围从内存中延伸到落盘之后。也就是说即使某个超大 trace 已从 ingester flush 到后端存储其追踪记录依然保留用于后续的丢弃 / 告警判断避免超大 trace 反复进入系统占用资源。这与 overrides 中max_bytes_per_trace、max_traces_per_user等限制配合错误码TRACE_TOO_LARGE、LIVE_TRACES_EXCEEDED在 modules/overrides/config.go 中定义用于标记被拒绝的批次原因。新增指标Exposed metrics1.3 新增四个可观测性指标均可通过 Prometheus 抓取指标名说明源码位置tempo_limits_defaults默认资源限制无user标签modules/overrides/config.gotempo_limits_overrides应用到租户的资源限制覆盖带limit_name、user标签modules/overrides/overrides.gotempo_ingester_live_tracesingester 当前活跃livetrace 数modules/livestore/instance.gotempodb_compaction_outstanding_blocks待压缩outstanding的 block 数tempodb/compactor.go其中前两个指标让运维人员可以直接通过指标对比默认限制与租户实际生效限制快速定位某个租户为何被限流的问题——tempo_limits_defaults暴露的是*通配租户的默认值tempo_limits_overrides则按user标签区分每个租户的覆盖值两者标签结构limit_name一致便于 join 对比。tempo_ingester_live_traces帮助判断实例是否接近max_traces_per_user上限tempodb_compaction_outstanding_blocks则反映压缩积压程度。Azure 凭据可通过环境变量配置此前 Azure 后端存储的凭据只能写在配置文件中1.3 起支持通过环境变量指定AZURE_STORAGE_ACCOUNTAZURE_STORAGE_KEY这使得凭据可以从配置文件中剥离交由容器编排平台如 Kubernetes Secret注入避免敏感信息落盘。Azure 后端存储的完整配置说明可参考 Azure 后端配置文档。升级注意事项Upgrade considerations升级到 Tempo v1.3 时需要关注以下三项破坏性变更OTLP gRPC receiver 默认端口变更PR 1142OpenTelemetry Collector 的 gRPC receiver 默认端口从55680变更为4317。55680是早期 OTLP 草案使用的临时端口4317是 OTLP gRPC 的正式标准端口。若你的采集端如 OpenTelemetry Collector、Alloy仍显式或隐式地向55680发送数据需要在升级后同步调整接收端配置与采集端导出地址避免数据丢失。搜索配置项重命名PR 1174两个配置项被重命名旧名称已废弃旧配置项已移除新配置项querier.search_max_result_limitquery_frontend.search.max_result_limitquerier.search_default_result_limitquery_frontend.search.default_result_limit迁移时只需将原有 YAML 配置中的键名替换即可例如query_frontend: search: max_result_limit: 200 default_result_limit: 20这两个参数分别控制单次搜索可返回的最大结果数上限以及未显式指定时的默认结果数。它们隶属于 query-frontend 的 search 配置块与concurrent_jobs、target_bytes_per_job等搜索性能参数同属一组完整配置项清单参见 配置文档。移除tempopb.Pusher的Push方法PR 1173tempopb.Pusher接口中已废弃的Push方法被移除。任何直接调用该方法而非PushBytes/PushBytesV2的客户端或内部调用方必须迁移到受支持的推送接口。这一变更主要影响深度集成 Tempo API 的自定义客户端代码。已知问题Known issuesGrafana 尚未支持tempoBackendSearch功能开关虽然 Tempo 1.3 服务端已支持后端数据存储搜索但当时 Grafana 数据源尚未支持该 feature toggle因此在 Grafana UI 中暂无法直接开启后端搜索只能通过 API 层面使用。Bug 修复Bug fixes1.3.1 修复PR 1260mapno修复了使用etcd 作为 ring 后端存储时发生 panic的问题。此前在某些 etcd 响应场景下ring 成员解析路径存在空值解引用风险1.3.1 修复后 etcd 后端可稳定使用。1.3.2 修复PR 1295joe-elliott修复了**针对 ingester 的搜索其 start/end 时间范围被破坏corrupted**的问题。此前某些搜索请求在定位 ingester 时时间范围计算存在错误导致搜索结果的时间边界不准确1.3.2 修正了时间范围的传递与计算逻辑。总结Tempo 1.3 是搜索能力走向全量数据的关键版本后端存储搜索打通了历史 trace 的检索路径配合新增的四个运维指标、compactor ring 自动遗忘与超大 trace 保护机制为大规模生产部署提供了更完整的可观测性闭环。升级时务必完成 OTLP 端口迁移、搜索配置项重命名以及 Push 接口迁移三项工作并建议按顺序升级到包含 1.3.1、1.3.2 修复的最新补丁版本。【免费下载链接】tempoGrafana Tempo is a high volume, minimal dependency distributed tracing backend.项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进