菜单
开源

版本 2.1 发布说明

Tempo 团队很高兴宣布 Tempo 2.1 版本发布。

在此版本中,Tempo 增强了 TraceQL,您可以使用 span kind、任意算术运算以及新的聚合函数 min/max/sum 等功能选择追踪。此外,Tempo 2.1 引入了 vParquet2,这是一个新的实验性 Parquet 版本,旨在更好地兼容其他 Parquet 实现。

注意:有关更改和增强功能的完整列表,请参阅 Tempo 2.1 变更日志

特性与增强功能

以下重点介绍 Tempo 2.1 中一些最重要的特性和增强功能。

TraceQL 的增强功能

TraceQL 受 PromQL 和 LogQL 启发,是一种专为在 Tempo 中选择追踪而设计的查询语言。TraceQL 使得查找在使用 Tempo 1.x 搜索中本来难以甚至不可能识别的追踪成为可能。

在此版本中,我们扩展了 TraceQL 语言。在 Tempo 2.0 中,TraceQL 允许用户根据资源属性、时间、持续时间和基本聚合来选择追踪。在 Tempo 2.1 中,用户还可以根据以下内容选择追踪

  • 启用按 kind(固有属性)进行查询 (PR 2217)
    • { kind = server }, { kind = client }, { kind = consumer }
    • { kind = server && duration > 1s }
  • 支持算术表达式 (PR 2146)
    • { span.bytesProcessed > 10 * 1024 * 1024 }
    • { span.bytesProcessed / 1024 / 1024 > 10 }
    • { span.jobs / span.bytes > 3 }
  • 启用 min, max, sum 聚合过滤器
    • {} | min(duration) > 1s
    • {} | max(span.bytesProcessed) < 1024 * 1024
    • {} | sum(duration) > 1h
  • 支持更多数字类型:比较浮点数和整数,允许持续时间使用浮点数,并在进行聚合过滤时支持负数。(PR 2139, 2304, 2289)
    • { 1 = 1.0 }
    • { duration > 1.5s }, {duration > 1s500ms }
    • {} | count() > -1

本次更新还包括对 TraceQL 查询性能的重大改进。[ PR 2119]

要了解 TraceQL 语法,请参阅TraceQL 文档。有关 TraceQL 语言未来计划扩展的信息,请参阅未来工作

TraceQL 查询编辑器改进(实验性)

从 Grafana 9.5 开始,用户可以使用由 TraceQL 支持的 Tempo 搜索选项卡。要启用此功能,请使用 Grafana 的 traceqlSearch 功能标志。编辑器可以自动完成查询并具有精简的界面。

Grafana 即将包含一个新的搜索屏幕,可以根据下拉菜单中选择的选项构建 TraceQL 查询。联系支持以在 Grafana Cloud 中启用此功能。

A TraceQL search constructed by selecting options

更多信息,请参阅TraceQL 查询编辑器文档

vParquet2(实验性)

Tempo 2.1 提供了一个 Parquet 后端的实验性更新:vParquet2。由于引入了专用的 span 持续时间列,包含持续时间的 TraceQL 查询性能得到提升。vParquet2 也将是 TraceQL 结构运算符的先决条件,该运算符将在未来版本中引入。[ PR 2244]

您可以通过更改块格式版本选项来选择 Tempo 使用的块格式。要使用新格式,请将块格式设置为 vParquet2。更多信息,请阅读Parquet 配置文档

新编码实现了与 vParquet 不兼容的 Parquet schema 更改

  • 重命名列,使 schema 更一致,并更接近 OTEL 使用的名称和术语
  • 为持续时间添加一个专用的 span 列
  • 新增列将支持新的 TraceQL 特性,包括层级查询

其他增强功能和特性

完整列表请参阅Tempo 2.1 变更日志

  • PR 2105 在追踪过大无法压缩时记录日志。当追踪超出 ingesters 中设置的特定限制时,会被丢弃。现在,任何丢弃的追踪都会记录其丢弃的 span 数量和追踪 ID。
  • PR 2195 添加对 Azure Workload Identity 认证的支持
  • PR 2130 向 tempo-cli 添加迁移租户的命令
  • PR 2093 在静态配置中添加对 s3 session token 的支持

升级注意事项

升级到 Tempo 2.1 时,请注意以下破坏性更改。

Tempo 暴露的指标名称的破坏性更改

Tempo 在其 /metrics 端点暴露的所有先前以 cortex_ 为前缀的 Prometheus 指标,现已重命名为以 tempo_ 为前缀。(PR 2204)

Tempo 现在包含 SLO 指标,用于统计在可配置时间范围内返回的查询数量。(PR 2008)

query_frontend_result_metrics_inspected_bytes 指标已被移除,取而代之的是 query_frontend_bytes_processed_per_second

移除对 v2 块搜索的支持

用户无法再搜索 v2 格式的块。只有 vParquet 和 vParquet2 格式支持搜索。以下搜索配置选项已从 overrides 部分移除

overrides:
  max_search_bytes_per_trace:
  search_tags_allow_list:
  search_tags_deny_list:

以下指标配置也已移除

tempo_ingester_trace_search_bytes_discarded_total

此更改意味着,如果您直接从 1.9 升级到 2.1,将无法搜索您的 v2 块。避免此问题的一种方法是先升级到 2.0,因为 2.0 支持搜索 v2 和 vParquet 块。您可以让旧的 v2 块逐渐过期,同时 Tempo 根据传入的追踪创建新的 vParquet 块。一旦所有 v2 块都被删除且只剩下 vParquet 格式的块,您就可以升级到 Tempo 2.1。届时您的所有块都将可搜索。

最后,执行搜索时不再缓存 parquet 文件 ( PR 2164)。

错误修复

完整列表请参阅Tempo 2.1 变更日志

2.1.1

  • PR 2400 修复了 Tempo 有时在存储时将布尔值从 false 翻转为 true 的问题。

2.1

  • PR 2220 在压缩过程中正确连接上下文
  • PR 2081 在租户仪表盘的 bytes/s 面板中应用 rate() 函数。
  • PR 2111 在 GCS 后端压缩期间重试复制操作。
  • PR 2164 改进 SearchTagValuesV2 中的锁定和搜索头块
  • PR 2152 修复了在尝试删除文件夹之前未关闭 WAL 块文件的问题。
  • PR 2219 如果有匹配项,停止搜索虚拟标签。这可以防止像 status 这样的固有属性显示无效值。
  • PR 2254 在对 spanset 进行 && 和 || 操作时正确返回唯一的 span。