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 进行了以下改进
改进了 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]
distributor:
metric_received_spans:
enabled: false
root_only: false
Overrides 模块配置的更改
我们在 overrides 模块中添加了一个新的 defaults
块,用于配置全局或按租户设置。Overrides 更改为缩进语法。有关详细信息,请阅读Overrides 配置文档。
您还可以使用 Tempo CLI 迁移配置。请参阅文档。[PR 2688]
旧的配置块如下所示
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]
以下是新配置块的示例
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"} | 已移除已废弃的前端指标配置选项 |
安全修复
已解决以下漏洞
- 将 Alpine 镜像版本更新至 3.18 以修复 CVE-2022-48174 PR 3046
- 修复了 HTTP 快速重置漏洞 (CVE-2023-39325) PR 3017
错误修复
如需完整列表,请参阅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_total
和tempo_query_frontend_queries_within_slo_total
。PR 2840 这个查询现在能正确告诉您满足 SLO 的请求的百分比
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-frontend
。PR 2671Ingester 错误在查询路径上正确传播。PR 2935
修复了 ingester 在超时后未停止查询的问题。PR 3031
重新排序了 S3 凭证链并升级了
minio-go
。native_aws_auth_enabled
已废弃。PR 3006