菜单
Grafana Cloud Enterprise 开源

跟踪关联

您可以使用 Grafana 关联在跟踪视图中嵌入交互式关联链接,以便从 span 跳转到相关的日志、指标、分析或外部系统。本指南说明了如何在 Grafana 中配置和管理跟踪关联。

什么是跟踪关联?

跟踪关联允许您定义规则,将上下文相关的链接注入到跟踪 span 中。在 Explore 或跟踪面板中查看跟踪时,用户可以点击这些链接直接跳转到相关的查询或 URL。与您可以为 Tempo 数据源配置的跟踪到日志、指标和分析链接相比,关联功能类似但更灵活。

Using correlations for a trace

开始之前

要使用跟踪关联,您需要

  • Grafana 12 或更高版本
  • 在 Grafana 中配置了Tempo 数据源
  • Grafana 中配置设置或配置文件的管理员访问权限

设置跟踪关联

  1. 使用管理员账户登录 Grafana。

  2. 前往 配置 > 插件和数据 > 关联

  3. 选择 添加关联添加新项

  4. 在步骤 1 中,为关联提供一个标签,以及一个可选的描述

  5. 在步骤 2 中,配置关联的目标

    • 选择类型下拉列表,选择查询以链接到另一个数据源,或选择外部以链接到自定义 URL。

    • 对于查询目标,选择目标下拉列表,然后选择点击链接时应查询的数据源。定义目标查询。

    • 对于外部目标,输入外部 URL

    • 对于查询和外部目标,您都可以使用基于跟踪数据的以下变量。对象变量必须通过正则表达式转换解析为值变量。

    变量类型描述
    traceId字符串跟踪标识符
    spanID字符串Span 标识符
    parentSpanID字符串父 Span 标识符
    serviceName字符串服务名称
    serviceTags对象资源属性
    tags对象Span 属性
    logs对象跟踪事件
    references对象跟踪链接
    Setting up a correlation for a Loki target using trace variables
  6. 在步骤 3 中,配置关联数据源

    • 来源下拉列表中选择您的 Tempo 数据源。

    • 结果字段中输入用于关联的跟踪数据变量。

    • (可选)添加一个或多个转换,将跟踪数据解析为附加变量。您可以使用这些变量配置关联的目标

    Setting up a correlation for a Loki data source
  7. 选择保存以保存关联。

在 Explore 中验证关联

  1. 打开 Explore 并选择您的 Tempo 跟踪源。

  2. 运行查询以加载 span。

  3. 将鼠标悬停在 span 链接菜单上或打开 span 详情,以显示关联链接按钮。

    Using correlations for a trace
  4. 点击关联链接以打开分屏视图或导航到您的目标系统或查询。

示例

以下是一些实用的关联配置,帮助您快速入门。

示例 1:按服务名称和跟踪标识符链接到日志

在此示例中,您配置了按服务名称和跟踪标识符链接到日志的跟踪关联。

  1. 在步骤 1 中,添加一个新关联,标签为此服务和跟踪的日志,以及一个可选描述。

    Using correlations for a trace
  2. 在步骤 2 中,配置关联目标

    • 选择目标类型查询,并将您的 Loki 数据源选为目标

    • 定义 Loki 查询,使用从 span 数据派生的变量 serviceNametraceID

      {service_name="$serviceName"} | trace_id=`$traceID` |= ``
      Using correlations for a trace
  3. 在步骤 3 中,配置关联源

    • 将您的 Tempo 数据源选为

    • 使用 traceID 作为结果字段

    • 添加一个新的转换,使用正则表达式从 span 的 serviceTags 中提取 serviceName

      {(?=[^\}]*\bkey":"service.name")[^\}]*\bvalue":"(.*?)".*}
    Using correlations for a trace
  4. 保存关联。

示例 2:跟踪到自定义 URL

在此示例中,您使用自定义 URL 配置跟踪关联。

  1. 在步骤 1 中,添加一个新关联,标签为打开自定义 URL,以及一个可选描述。

  2. 在步骤 2 中,配置关联目标

    • 选择目标类型外部

    • 定义您的目标 URL,使用从 span 数据派生的变量。在此示例中,我们使用了 serviceNametraceID

      https://my-server.example.com/service=$serviceName&trace=$traceID
  3. 在步骤 3 中,配置关联源

    • 将您的 Tempo 数据源选为

    • 使用 traceID 作为结果字段

    • 添加一个新的转换,使用正则表达式从 span 的 serviceTags 中提取 serviceName

      {(?=[^\}]*\bkey":"service.name")[^\}]*\bvalue":"(.*?)".*}
  4. 保存关联。

最佳实践

  • 清晰命名:使用描述性名称指示源和目标。例如:跟踪到日志中的错误

  • 限制范围:对于高基数字段(如 traceID),请确保您的目标系统能够处理频繁查询。

  • 明智使用模板:如果需要注入多个字段,请使用多个 $variable 令牌。