菜单
文档breadcrumb arrow Grafana Tempobreadcrumb arrow 入门breadcrumb arrow 来自 traces 的指标
开源

来自 traces 的指标

指标提供了对您使用可观测性策略监控的系统的强大洞察。您可以使用 Grafana Tempo 从 traces 生成指标,而无需运行额外的服务来生成指标。

Grafana Tempo 可以使用 metrics-generator、TraceQL 指标(实验性)和指标摘要 API(已弃用)从 tracing 数据生成指标。请参考下表,了解这些指标及其功能的摘要。由于指标摘要已弃用,因此未包含在内。

指标生成器TraceQL 指标
功能Tempo 中的一个可选组件,处理传入的 spans 以生成预定义指标,特别关注 RED(速率、错误、持续时间)指标和服务图。Tempo 中的一个实验性功能,允许使用 TraceQL 查询语言直接从 trace 数据实时计算指标,无需单独的指标存储后端。
功能Span 指标:根据服务名称、操作、span 类型、状态码和其他 span 属性等维度计算 span 的总数和持续时间。
服务图:分析 traces 以映射服务之间的关系,识别事务并记录与请求计数和持续时间相关的指标。
通过对 trace 查询结果应用函数进行 trace 数据的临时聚合和分析,类似于 LogQL 处理日志的方式。
输出生成的指标被写入 Prometheus 兼容数据库,从而实现与时间序列数据库的集成,用于存储和分析。在查询时动态生成指标,有助于对 trace 数据中的特定行为或模式进行灵活细致的调查。
用例适用于持续监控和告警,利用存储在时间序列数据库中的预定义指标。对于 trace 特定的分析表达能力较弱,因为它侧重于标准遥测维度和 RED 指标。直接分析 trace 数据时表达能力更强、更灵活,支持复杂的基于 trace 的查询和细粒度探索。适用于探索性分析和调试,允许用户在没有预先定义指标或考虑存储的情况下从 trace 数据中获取洞察。
设置在 Tempo 配置文件中配置 metrics-generator,启用 span 指标或服务图等处理器,并将指标发送到 Prometheus 兼容数据库。在 overrides 和 metrics-generator 配置中配置 local-blocks 处理器。
查询范围支持跨长时间范围查询,仅受限于指标后端的保留期。目前默认最大查询范围为 3 小时,因为指标是根据存储的 traces 实时计算的。
查询语言通过 Prometheus/Grafana 使用 PromQL 消费指标。使用 TraceQL,其语法受 PromQL 启发,但并非所有 PromQL 功能都受支持;这是一个类似但独立的子集,语义不同。

指标生成器

metrics-generator 使用 services_graphs、span_metrics 和 local_blocks 处理器从已摄取的 traces 生成指标。services_graphs 和 span_metrics 处理器生成的指标写入 Prometheus 兼容后端。local_blocks 处理器添加了对 TraceQL 指标的支持,并为生成器提供了回答 TraceQL 指标查询的能力,而无需将任何数据写入 Prometheus 后端。metrics-generator 使用 Prometheus remote write 协议处理 spans 并写入指标。

metrics-generator 查看传入的 spans,并从中计算速率、错误和持续时间 (RED) 指标,然后将其写入时间序列数据库(如 Prometheus)。通过查询 Prometheus,您可以查看系统的总体请求速率、错误请求速率以及请求延迟的分布。通过使用这些指标上的标签,您可以获得更细粒度的每服务、每命名空间或每操作级别的请求速率、错误率和延迟视图。

用于调查指标含义
活动异常激增速率每秒请求数
tracing 生态系统中的整体问题错误这些请求中失败的数量
响应时间和延迟问题持续时间这些请求花费的时间量,以直方图表示

metrics-generator 使用 services_graphs、span_metrics 和 local_blocks 处理器从 tracing 数据生成指标。services_graphs 和 span_metrics 处理器生成的指标写入 Prometheus 兼容后端。local_blocks 处理器添加了对 TraceQL 指标的支持,并为生成器提供了回答 TraceQL 指标查询的能力,而无需将任何数据写入 Prometheus 后端。metrics-generator 使用 Prometheus remote write 协议处理 spans 并写入指标。

欲了解更多信息,请参阅指标生成器

Span 指标的用例

如果您的系统没有使用指标进行监控,但实现了分布式 tracing,那么 Span 指标尤其有用。您可以从 tracing pipeline 中获得开箱即用的指标。

注意

在 Grafana Cloud 中,metrics-generator 默认禁用。请联系 Grafana 支持以在您的组织中启用指标生成。

在您的组织中启用 metrics-generator 后,请参阅Metrics-generator 配置,了解 metrics-generator 的选项信息。

Trace service graph

这些指标存在于您的托管指标实例中,也可以轻松用于生成功能强大的自定义仪表盘。

Trace custom metrics dashboard

metrics-generator 还会自动生成 exemplars,从而轻松实现指标与 trace 的关联。Exemplars 在 Grafana Cloud 中可用。

Span details
Span 详情

TraceQL 指标(实验性)

Traces 是一种独特的可观测性信号,包含系统中组件之间的因果关系。

  • 您想知道您的应用下游所有系统中发生了多少次数据库调用吗?
  • 给定端点下有哪些服务当前正在失败?
  • 给定端点下有哪些服务当前很慢?

实验性的 TraceQL 指标可以通过汇总解析您的 traces 来回答所有这些问题。

您可以像查询存储在 Prometheus、Grafana Mimir 或其他 Prometheus 兼容时间序列数据库 (TSDB) 中的结果一样,查询 TraceQL 指标生成的数据。TraceQL 指标查询允许您在 Tempo(您的 tracing 数据库)中实时计算 trace span 数据上的指标,而无需 Prometheus 等时间序列数据库。

同名 API 提供支持的 TraceQL 指标会针对给定的指标查询返回类似 Prometheus 的时间序列。指标查询会将函数应用于 trace 查询结果。TraceQL 指标使用 metrics-generator 中的 local_blocks 处理器。

TraceQL 指标为 Grafana Traces Drilldown 应用提供支持。您可以使用 Grafana Play 在 Grafana Traces Drilldown 应用中探索可视化指标的功能。

Give it a try using Grafana Play
使用 Grafana Play 试用一下

使用 Grafana Play,您可以探索并了解其工作原理,从实际示例中学习,从而加快您的开发速度。此功能可在 Grafana Play 网站上看到。

参考这些资源获取更多信息

指标摘要 API(已弃用)

警告

自 Tempo 2.7 起,指标摘要 API 已弃用。由指标摘要 API 提供支持的功能(例如 Aggregate by 表)在 Grafana Cloud 和 Grafana 11.3 及更高版本中也已弃用。它将在未来的版本中移除。

指标摘要 API 是 Tempo 中早期的一种功能,用于在查询时生成临时 RED 指标。此数据显示在 Grafana Explore 的 Aggregate by 表中,您可以在其中查看系统在过去一小时内的请求速率、错误率和延迟值,这些值是从您的 trace 数据计算得出的。这些值按附加到您的 traces 的任何和所有属性进行细分。

当您使用“Aggregate by”选项时,Grafana 会调用 Tempo 的指标摘要 API,该 API 会根据过去一小时内看到的 kind=server 的 spans 返回这些 RED 指标。

指标摘要 API 返回过去一小时内发送到 Tempo 的 kind=server 的 spans 的 RED 指标。指标摘要功能无需使用 metrics-generator 即可从 trace 数据创建指标。

欲了解有关指标摘要 API 的更多信息,请参阅Traces to metrics: Grafana Tempo 中的临时 RED 指标以及“Aggregate by”

指标摘要 API 和 Aggregate by 表已弃用,取而代之的是 TraceQL 指标。欲了解更多信息,请参阅Deprecation in favor of TraceQL metrics