Grafana Tempo 引入新查询语言并支持 Apache Parquet

Grafana Tempo 2.0 发布:引入 TraceQL 查询语言和 Apache Parquet 格式支持

Grafana 发布了 Grafana Tempo 2.0,引入了新的 TraceQL 查询语言,并支持 Apache Parquet 格式作为默认存储格式。Grafana Tempo 是一个开源追踪后端,与对象存储兼容。

TraceQL 查询语言

TraceQL 是一种新的查询语言,基于现有的 PromQL 和 LogQL 语言。它允许根据跨度(span)和资源属性、时间以及持续时间来选择追踪数据。TraceQL 查询是一个表达式,逐个追踪进行评估。查询由一组表达式组成,这些表达式链接成一个管道。管道中的每个表达式将选择或丢弃包含在结果中的跨度集。

例如,以下查询将选择那些跨度具有 http.status_code200299 之间且追踪中匹配跨度数量大于 2 的追踪:

{ span.http.status_code >= 200 && span.http.status_code < 300 } | count() > 2

追踪和跨度的结构

一个追踪表示请求在系统中的旅程,由一个或多个跨度组成。跨度具有相对于追踪开始时间的开始时间、持续时间和操作名称。

TraceQL 的跨数据类型

TraceQL 区分两种跨数据类型:内在字段属性字段。内在字段是跨度的基本字段,包括状态、持续时间和名称等。属性字段是从跨度派生的,可以自定义。例如,查询 { span.http.method = "GET" } 使用跨度的属性字段返回使用 HTTP GET 方法的追踪。

比较操作符和聚合器

TraceQL 支持比较操作符,可以用于组合跨度集。例如,查找跨越多区域的追踪可以使用以下查询:

{ resource.region = "eu-west-0" } && { resource.region = "eu-west-1" }

此外,TraceQL 引入了聚合器 countsumcount 用于返回跨度集中跨度的数量,而 average 用于提供跨度集中给定属性或内在字段的平均值。

Apache Parquet 格式支持

Grafana Tempo 2.0 将 Apache Parquet 作为默认的后端存储格式。Apache Parquet 是一种开源的列式数据文件格式。Grafana 的首席工程师 Joe Elliott 指出,这种变化可能会带来性能影响,因为 Parquet 需要更多的资源来构建列式块,运营商需要至少 1.5 倍的资源来运行 Tempo 2.0 集群。

然而,Tempo 的发布说明中提到,使用 Parquet 格式后,搜索速度显著提高。从之前的格式(v2)的每秒 40-50 GB 搜索速度提升到 Parquet 格式的每秒 300 GB。

兼容性和开源许可

Parquet 格式在 Tempo 2.0 中默认启用,并且是使用新 TempoQL 查询语言的必要条件。启用后,Tempo 将开始以 Parquet 格式写入数据,但现有数据保持不变。如果需要,可以禁用 Parquet 格式,恢复使用原始的 v2 块格式。

Grafana Tempo 2.0 是开源的,基于 AGPL-3.0 许可证发布。Joe Elliott 指出,最佳的 TraceQL 体验需要与 Grafana 9.4 配合使用。

阅读 86
0 条评论