版本 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 中启用此功能。
更多信息,请参阅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 的问题。