版本 2.2 发布说明
Tempo 团队很高兴宣布发布 Tempo 2.2。
此版本提供以下功能:
- TraceQL 语言的主要新增功能:结构运算符(后代、子级、同级)、按属性分组的结果 (by())、select 运算符以及 3 个新的内置属性。
- TraceQL 结果更快,这得益于一个流式端点,该端点在查询执行时返回部分结果,以及众多性能相关的改进。
- 一个实验性指标摘要 API,它返回按您选择的属性分组的最近接收到的 Span 的 RED 指标。
Tempo 2.2 将 vParquet2(旨在与其它 Parquet 实现更兼容的 Parquet 版本)设为默认块格式。此块格式是使用结构运算符所必需的,并且相对于以前的格式提高了查询性能。
阅读Tempo 2.2 博客文章,获取更多有关这些改进的示例和详细信息。
注意
有关更改、增强功能和错误修复的完整列表,请参阅Tempo 2.2 CHANGELOG。
功能和增强
Tempo 2.2 中的一些最重要功能和增强如下所示。
扩展 TraceQL 语言
在此版本中,我们对 TraceQL 语言进行了增强。TraceQL 现在提供:
- 结构运算符:后代 (»)、子级 (>) 和同级 (~) (文档)。根据追踪结构和 Span 之间的关系查找相关追踪。[PR #2625 #2660]
- 一个
select()
操作,允许您指定要包含在 TraceQL 响应中的任意 Span 属性 (文档) [PR 2494] - 一个
by()
操作,可按您选择的属性对追踪中的 Span 集进行分组。Grafana UI 尚不支持此操作;您只能在直接查询搜索 API 时使用by()
。[ 文档 PR 2490] - 用于 TraceQL 查询的新内置属性:
traceDuration
、rootName
和rootServiceName
(文档) [PR #2503]
阅读Tempo 2.2 博客文章,获取有关如何使用这些新语言功能的示例。
要了解更多 TraceQL 语法,请参阅 TraceQL 文档。有关 TraceQL 语言未来计划扩展的信息,请参阅 未来工作。
更快获取 TraceQL 结果
我们一直在努力减少您等待 TraceQL 查询结果的时间,在此版本中,我们在此方面取得了不错的进展。
我们在查询前端添加了一个 gRPC 流式 端点,允许客户端从 Tempo 流式传输搜索结果。Tempo CLI 已更新以使用此新流式端点 [PR #2366]。从 10.1 版本开始,Grafana 也支持它,不过您必须先启用 traceQLStreaming
功能开关 [PR #72288]。
通过将结果流式传输到客户端,您可以在整个查询完成之前就开始查看与您的查询匹配的追踪。这对于长时间运行的查询特别有帮助;虽然完成查询的总时间相同,但您可以在返回完整的匹配追踪集之前开始查看您的首批匹配项。
除了流式传输部分结果外,我们还合并了许多改进措施来加快 TraceQL 查询。以下仅列举几项:
- 通过异步创建任务,提高了 TraceQL 吞吐量。[PR 2530]
指标摘要 API(实验性)
Tempo 添加了一个实验性 API,该 API 返回按您选择的属性分组的,在过去一小时内发送的 kind=server
的 Span 的 RED 指标(Span 计数、错误 Span 计数和延迟信息)。例如,您可以使用此 API 比较具有不同 namespace
属性值的 Span 的错误率。通过此,您可能会发现 namespace=A
的 Span 的错误率明显高于 namespace=B
的 Span。再例如,您可以使用此 API 比较按 region
属性细分的 Span 的延迟。通过此,您可能会注意到 region=North-America
的 Span 的延迟高于 region=Asia-Pacific
的 Span。
此 API 旨在按需分析传入的 Span;通过按属性对 Span 进行分段并查找 RED 指标的差异,您可以更快地定位高错误率或高延迟等问题的来源。
与指标生成器计算的 RED 指标不同,此 API 返回的值不会作为时间序列持久化。这样做的优势在于您无需提供自己的时间序列数据库来存储和查询这些指标。它还允许您按高基数属性(在时间序列数据库中存储成本过高)细分计算 RED 指标。如果您想在数小时或数天的时段内存储和可视化 RED 指标,或者想对这些指标设置告警,请使用指标生成器。
要了解有关此 API 的更多信息,请参阅指标摘要 API 文档。
这项工作体现在多个 PR 中:2368、2418、2424、2442、2480、2481、2501、2579 和 2582。
其他增强
标签值和标签名称 API 现在支持过滤 [PR 2253]。这允许您根据特定条件检索所有有效的属性值和名称。例如,您可以获取在带有属性
resource=A
的 Span 上看到的namespace
属性值的列表。此功能默认关闭;要启用,请配置autocomplete_filtering_enabled
。( 文档)。Grafana 中的自动完成功能可以利用此过滤功能,从 v10.2 开始提供更好的建议 PR [67845]。指标生成器现在支持 Span 过滤。设置过滤器允许您计算您关心的特定 Span 的指标,排除其他 Span。它还可以减少生成指标的基数,从而降低将这些指标存储在 Prometheus 兼容的 TSDB 中的成本。( 文档) [PR 2274]
指标生成器现在可以检测虚拟节点 ( 文档) [PR 2365]。因此,您现在将在服务图中看到这些虚拟节点。有关更多信息,请参阅虚拟节点文档。
升级注意事项
升级到 Tempo 2.2 时,请注意以下破坏性更改:
- 仅限 JSonnet 用户:我们将指标生成器组件从 k8s deployment 转换为 k8s statefulset。有关无缝迁移说明,请参阅 PR。[PR #2533, #2467]
- 移除或重命名的配置参数(见下文)
虽然不是破坏性更改,但升级到 Tempo 2.2 将默认把块格式更改为 vParquet2。要保留以前的块格式,请阅读Parquet 配置文档。我们强烈建议尽快升级到 vParquet2,因为这是在 TraceQL 查询中使用结构运算符所必需的,并且能提高查询性能,特别是对于使用 duration
内置属性的查询。
移除或重命名的配置参数
以下字段已移除或重命名。
storage
trace
s3
insecure_skip_verify: true // 重命名为 tls_insecure_skip_verify
参数 | 备注 |
| 移除对 `tolerant_failed_blocks` 的支持 [PR 2416] |
将 `insecure_skip_verify` 重命名为 `tls_insecure_skip_verify` [PR 2407] |
错误修复
有关完整列表,请参阅Tempo CHANGELOG。
2.2.4
- 将 Alpine 镜像版本更新到 3.18 以修补 CVE-2022-48174 PR 3046
- 将 Jaeger query docker 镜像升级到 1.50.0 PR 2998
2.2.3
- 修复 S3 凭证提供者配置 PR 2889
2.2.2
- 修复节点角色 auth IDMSv1 PR 2760
2.2.1
- 修复索引失败的错误指标 PR 2781
- 修复了指标生成器在使用多个租户和默认覆盖项时崩溃的问题 PR 2786
- 恢复在 PR 2414 中移除的
tenant_header_key
PR 2786 - 默认禁用通过 HTTP 进行流式传输 PR 2803