菜单
开源

2.3 版本发布说明

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

此版本为您带来

  • 新的 结构化运算符 在 TraceQL 中

    • 祖先 (<<)
    • 父级 (<)
    • 非子级 (!>) (实验性)
    • 非后代 (!>>) (实验性)
    • 非祖先 (!<<) (实验性)
    • 非父级 (!<) (实验性)
    • 非兄弟姐妹 (!~) (实验性)
  • TraceQL 支持 搜索带引号的属性 (例如,{ span."name with spaces" = "foo" })。

  • 专用属性列 用于改进对您最常查询的属性的查询性能

Tempo 2.3 引入了 vParquet3,这是一个旨在与其它 Parquet 实现更兼容的 Parquet 版本,现已可用于生产环境。这种块格式相对于之前的格式提升了查询性能。

阅读Tempo 2.3 博客文章,了解这些改进的更多示例和详细信息。

这些发布说明重点介绍了最重要的特性和错误修复。如需完整列表,请参阅Tempo CHANGELOG

特性和增强功能

Tempo 2.3 中最重要的特性和增强功能如下所示。

vParquet3 晋升为稳定版

vParquet3,Tempo 2.2 中引入的更新的 Parquet 块格式,已晋升为稳定版并可用于生产环境。我们对 vParquet3 相较于之前格式感到兴奋,因为它支持专用属性列,这有助于加速对您最大和最常查询属性的查询。[ PR 2649]

要详细了解 vParquet3 的设计,请参阅设计提案。如需通用信息,请参阅Apache Parquet schema

专用属性列

专用属性列通过将最大和最常用的属性存储在其自己的列中,而不是存储在通用属性键值列表中,从而提高了查询性能。

专用属性列是随 vParquet3 引入的,仅在使用此存储格式时可用。

要详细了解此新功能,请参阅专用属性列文档。

TraceQL

TraceQL 是 Tempo 特有的查询语言,允许您对追踪数据执行自定义查询。要详细了解 TraceQL 语法,请参阅TraceQL 文档。有关 TraceQL 语言未来计划的扩展信息,请参阅未来工作

我们对 TraceQL 进行了以下改进

  • 添加了两个结构化运算符:祖先 (<<) 和父级 (<) (文档) [PR 2877]

  • 添加了实验性非结构化运算符:!>>!>!<<!<!~ (文档) [PR 2993]

  • 添加了带引号的属性语法,以便您可以搜索名称中包含空格和其它特殊字符的属性 (文档) [PR 3004]

  • 改进了 TraceQL select() 查询的性能。Metrics-summary 现在也能正确处理缺失的属性。[PR 2765]

  • 添加了对使用 statusMessage 内在属性搜索 OpenTelemetry 的span 状态消息的支持 (文档) [PR 2848]

  • 修复了空过滤器 ({}) 未返回预期结果的情况 [PR 2498]

Metrics-generator

我们对 metrics-generator 进行了以下改进

  • /api/overrides 添加了 scope 查询参数,以便用户可以选择获取 API 存储的覆盖或合并后的覆盖(Tempo 实际使用的覆盖)[PR 2915, #3018]
  • 添加了 TempoUserConfigurableOverridesReloadFailing 告警 [PR 2784]
  • 添加了一个 metrics-generator 配置选项,用于启用/禁用远程写入上的 X-Scope-OrgID 头部,以更好地支持单租户设置。[PR 2974]
  • 允许按租户而不是按全局配置 metrics-generator 摄取缓冲区 [ PR 2589]
  • 将多个 metrics-generator 字段添加到用户可配置的覆盖中,包括直方图桶、收集间隔和 span 指标过滤策略 [PR 2906, 2711, 2928, 2899]

升级注意事项

升级到 Tempo 2.3 时,请注意这些注意事项和破坏性更改。

过渡到 vParquet 3

虽然 vParquet3 格式尚未成为默认格式,但它已可用于生产环境,我们强烈建议切换到它以提高查询性能和专用属性列

升级到 Tempo 2.3 不会修改 Parquet 块格式。您可以在 Tempo 2.3 中使用 vParquet2 或 vParquet3。vParquet2 仍然是 Tempo 2.3 的默认后端;vParquet3 可用作稳定选项。

注意

Tempo 2.2 无法读取存储在 vParquet3 中的数据。

有关升级信息,请参阅将块格式更改为 vParquet3 升级文档。

Azure SDK v2

如果您使用 Azure 存储,我们建议使用 v2 SDK,azure-sdk-for-go。您可以使用 use_v2_sdk 配置选项进行切换。有关详细信息,请参阅存储块配置示例文档。[ PR 2952]

使用分发器生成调试指标

您现在可以为分发器启用新的配置块来生成调试指标。这些指标在追踪创建异常数量的 Span 的进程时尤其有用。[PR 3008]

yaml
distributor:
  metric_received_spans:
    enabled: false
    root_only: false

Overrides 模块配置的更改

我们在 overrides 模块中添加了一个新的 defaults 块,用于配置全局或按租户设置。Overrides 更改为缩进语法。有关详细信息,请阅读Overrides 配置文档

您还可以使用 Tempo CLI 迁移配置。请参阅文档。[PR 2688]

旧的配置块如下所示

yaml
overrides:
  ingestion_rate_strategy: local
  ingestion_rate_limit_bytes: 12345
  ingestion_burst_size_bytes: 67890
  max_search_duration: 17s
  forwarders: ['foo']
  metrics_generator_processors: [service-graphs, span-metrics]

以下是新配置块的示例

yaml
overrides:
  defaults:
    ingestion:
      rate_strategy: local
      rate_limit_bytes: 12345
      burst_size_bytes: 67890
    read:
      max_search_duration: 17s
    forwarders: ['foo']
    metrics_generator:
      processors: [service-graphs, span-metrics]

已移除或重命名的配置参数

参数备注
distributor.log_received_traces请改用 distributor.log_received_spans 配置块。[PR #3008]
tempo_query_frontend_queries_total{op="searchtags|metrics"}已移除已废弃的前端指标配置选项

安全修复

已解决以下漏洞

错误修复

如需完整列表,请参阅Tempo CHANGELOG

2.3.1

  • 在标签搜索中包含 statusMessage 内在属性。PR 3084
  • 修复了 compactor 忽略配置的 S3 头部的问题。PR 3149
  • 读取 session token 到 s3 凭据。PR 3144

2.3

  • 加载了内部服务器的默认值。PR 3041

  • 修复了 FilterPolicies 和 TargetInfoExcludedDimensions 的运行时覆盖直通问题。PR 3012

  • 修复了 metrics-summary API 中的一个 panic。PR #2738

  • 修复了上传块到 Azure Blob 存储时罕见的死锁问题。PR 2129

  • 只搜索落在请求时间范围内的 ingester 块。PR 2783

  • 对齐了 tempo_query_frontend_queries_totaltempo_query_frontend_queries_within_slo_totalPR 2840 这个查询现在能正确告诉您满足 SLO 的请求的百分比

    traceql
    sum(rate(tempo_query_frontend_queries_within_slo_total{}[1m])) by (op)
    /
    sum(rate(tempo_query_frontend_queries_total{}[1m])) by (op)
  • 修复了将 Azure Stack Hub 中的 blob 存储用作后端的问题。PR 2853

  • 遵守了 GRPC 流上的 spss。PR 2971

  • 将空根 span 替换从 querier 移至 query-frontendPR 2671

  • Ingester 错误在查询路径上正确传播。PR 2935

  • 修复了 ingester 在超时后未停止查询的问题。PR 3031

  • 重新排序了 S3 凭证链并升级了 minio-gonative_aws_auth_enabled 已废弃。PR 3006