菜单
Grafana Cloud Enterprise 开源

Exemplar 简介

Exemplar 是在给定时间间隔内获取的度量的特定跟踪代表。虽然指标擅长提供系统聚合视图,但调用链能提供单个请求的细粒度视图;Exemplar 则是连接二者的方式。

假设贵公司的网站流量激增。虽然超过百分之八十的用户能够在两秒内访问网站,但部分用户遇到了高于正常的响应时间,导致用户体验不佳。

为了找出导致延迟的因素,您必须比较快速响应的调用链和慢速响应的调用链。鉴于典型的生产环境数据量巨大,这是一项极其繁琐且耗时的工作。

使用 Exemplar 帮助您隔离数据分布中的问题,通过精确定位在某个时间间隔内表现出高延迟的查询调用链。将延迟问题定位到少数 Exemplar 调用链后,您可以将其与基于系统的额外信息或位置属性结合起来,更快地执行根本原因分析,从而快速解决性能问题。

目前仅 Prometheus 数据源支持 Exemplar。启用该功能后,Exemplar 数据默认可用。有关 Exemplar 配置以及如何启用 Exemplar 的更多信息,请参阅Prometheus 数据源中的 Exemplar 配置

Grafana 在 Explore 视图和仪表盘中显示 Exemplar 与指标数据并列。每个 Exemplar 都显示为突出显示的星形。您可以将光标悬停在 Exemplar 上以查看唯一的调用链 ID,它是一个键值对的组合。要进一步调查,请单击 traceID 属性旁边的蓝色按钮。

Screenshot showing the detail window of an exemplar
显示 Exemplar 详细信息窗口的截图

有关如何从指标和日志中下钻并查看 Exemplar 调用链详细信息的说明,请参阅查看 Exemplar 数据。要了解有关 Exemplar 的更多信息,请参阅博客文章 Intro to exemplars, which enable Grafana Tempo’s distributed tracing at massive scale

查看 Exemplar 数据

当 Prometheus 数据源启用 Exemplar 支持后,您可以在 Explore 视图或 Loki 日志详细信息中查看 Exemplar 数据。

在 Explore 中

Explore 将 Exemplar 调用链可视化为与指标数据并列的突出显示星形。有关 Explore 如何可视化调用链数据的更多信息,请参阅Explore 中的调用链

检查 Exemplar 调用链的详细信息

  1. 将光标悬停在 Exemplar(突出显示的星形)上。根据您使用的调用链数据源,您可能会看到一个带有标签 Query with <DATA SOURCE NAME> 的蓝色按钮。在下面的示例中,调用链数据源是 Tempo。

    Screenshot showing exemplar details
    显示 Exemplar 详细信息的截图
  2. 单击 traceID 属性旁边的 Query with Tempo 选项。调用链详细信息,包括调用链中的 Span,将列在右侧的一个单独面板中。

    Explorer view with panel showing trace details
    显示调用链详细信息面板的 Explorer 视图

有关如何下钻和分析调用链和 Span 详细信息的更多信息,请参阅分析调用链和 Span 详细信息 部分。

在日志中

您还可以在 Explore 中从 Loki 日志查看 Exemplar 调用链详细信息。在 Loki 的衍生字段链接中使用正则表达式提取 traceID 信息。现在当您展开 Loki 日志时,可以在 Detected fields 部分下看到一个 traceID 属性。要了解如何将日志消息的一部分提取到内部或外部链接的更多信息,请参阅在 Loki 中使用衍生字段

查看 Exemplar 调用链的详细信息

  1. 展开日志行并向下滚动到 Fields 部分。根据您的后端调用链数据源,您可能会看到一个带有标签 <DATA SOURCE NAME> 的蓝色按钮。

  2. 单击 traceID 属性旁边的蓝色按钮。通常,它显示后端数据源的名称。在下面的示例中,调用链数据源是 Tempo。调用链详细信息,包括调用链中的 Span,将列在右侧的一个单独面板中。

Explorer view with panel showing trace details
显示调用链详细信息面板的 Explorer 视图

有关如何下钻和分析调用链和 Span 详细信息的更多信息,请参阅分析调用链和 Span 详细信息 部分。

分析调用链和 Span

此面板显示调用链在不同部分的详细信息。

  • 顶部部分显示调用链 ID,表示查询结果对应于特定调用链。

    您可以使用 Add query 按钮向结果中添加更多调用链。

  • 下一部分显示特定调用链的整个 Span 作为一条窄条。从客户端一直到数据库查询的所有层级的调用链都显示出来,这提供了 HTTP 请求在所有层上处理的时间分布的鸟瞰图。

    1. 您可以在此窄条视图中点击以显示 Span 中更小时间段的放大视图。此放大视图将显示在面板的底部部分。

    2. 在放大视图中,您可以展开或折叠调用链的各个层级,以向下钻取到您感兴趣的特定 Span。

      例如,如果窄条视图显示大部分延迟发生在应用层,您可以向下展开应用层来进一步调查问题。要展开特定 Span 层,请单击左侧的图标。同一个按钮也可以折叠已展开的 Span。

  • 要查看任何层级 Span 的详细信息,请单击 Span 本身。

    这将显示与 Span 相关的额外元数据。元数据本身最初显示为一条窄条,但您可以通过点击元数据条来查看更多详细信息。

    Span details
    Span 详细信息