菜单
Grafana Cloud Enterprise 开源

配置 Tempo 数据源

Tempo 数据源设置 Grafana 如何连接到您的 Tempo 数据库,并允许您配置功能以及与其他遥测信号的集成。

您可以使用 Grafana 中的数据源界面或使用配置文件来配置数据源。本页解释了如何使用 Grafana 设置和启用数据源功能。

如果您使用的是自己安装的 Grafana,则可以使用 YAML 配置文件供应 Tempo 数据源。

根据您的追踪环境,您可能有一个以上的 Tempo 实例。Grafana 支持多个 Tempo 数据源。

开始之前

要配置 Tempo 数据源,您需要对您的 Grafana 实例具有管理员权限,并且需要一个配置为将追踪数据发送到 Grafana 的 Tempo 实例。

如果您正在供应 Tempo 数据源,则还需要托管 Grafana 实例的服务器上的管理员权限。有关后续步骤,请参阅供应数据源

Provisioned data source warning

添加或修改数据源

您可以使用这些步骤来配置新的 Tempo 数据源或编辑现有数据源。

添加新数据源

按照以下步骤设置新的 Tempo 数据源

  1. 在主菜单中选择连接
  2. 在搜索栏中输入Tempo
  3. 选择Tempo
  4. 在页面右上角选择添加新数据源
  5. 设置选项卡上,完成名称连接身份验证部分。
  • 使用名称字段指定数据源在面板、查询和探索中使用的名称。切换默认开关,使该数据源在新面板中预先选中。
  • 连接下,输入 Tempo 实例的 URL,例如 https://example.com:4100
  • 完成身份验证部分
  1. 可选:配置其他部分以向您的追踪数据添加功能。有关说明,请参阅附加步骤。
  2. 选择保存并测试

更新现有数据源

修改现有 Tempo 数据源

  1. 在主菜单中选择连接
  2. 选择数据源以查看已配置数据源的列表。
  3. 选择您希望修改的 Tempo 数据源。
  4. 配置或更新附加部分以向您的追踪数据添加功能。有关说明,请参阅附加步骤。
  5. 完成更新后,选择保存并测试

身份验证

使用本部分选择访问数据源的身份验证方法。

注意

在使用 Tempo 时,使用传输层安全性 (TLS) 可增加一层安全保障。有关设置 Tempo 的 TLS 加密的其他信息,请参阅配置 TLS 通信Tempo 配置

设置身份验证

  1. 从下拉列表中选择一种身份验证方法

    • 基本认证:使用用户名和密码验证您的数据源
    • 转发 OAuth 身份:转发查询用户到数据源的 OAuth 访问令牌和 OIDC ID 令牌(如果可用)
    • 无身份验证:访问数据源无需身份验证
  2. 仅适用于基本认证:输入用户密码

  3. 可选:完成TLS 设置以获取其他安全方法。

    TLS 客户端身份验证
    开启以使用客户端身份验证。启用后,它会添加服务器名称客户端证书客户端密钥字段。客户端提供一个证书,由服务器验证以建立客户端的可信身份。客户端密钥用于加密客户端和服务器之间的数据。这些详细信息会被加密并存储在 Grafana 数据库中。
    添加自签名证书
    激活此选项以使用自签名 TLS 证书。您可以在证书颁发机构生成的证书之上添加您自己的证书颁发机构 (CA) 证书以增加安全措施。
    跳过 TLS 证书验证
    激活后,它会绕过 TLS 证书验证。除非绝对必要用于测试,否则不建议使用。 身份验证部分显示 TLS 客户端证书选项
  4. 可选:添加HTTP 请求头。您可以传递关于请求和响应的附加上下文和元数据。选择添加请求头以添加请求头字段。

  5. 选择保存并测试以保留您的更改。

流式传输

流式传输使 TraceQL 查询结果在可用时立即显示。如果没有流式传输,则在所有结果返回之前不会显示任何结果。

要使用流式传输,您需要

  • 运行 Tempo 2.2 或更高版本,或 Grafana Enterprise Traces (GET) 2.2 或更高版本,或使用 Grafana Cloud Traces。

  • Tempo 必须设置 stream_over_http_enabled: true 才能启用流式传输。

    有关更多信息,请参阅Tempo gRPC API

  • 对于自托管的 Tempo 或 GET 实例:如果您的 Tempo 或 GET 实例位于不支持 gRPC 或 HTTP2 的负载均衡器或代理后面,流式传输可能无法工作,应禁用。

激活流式传输

流式传输在 Grafana 和 Grafana Cloud 中可用。您可以在 Tempo 数据源中将流式传输开关切换为开启来激活流式传输。

Streaming section in Tempo data source

流式传输激活后,在探索中显示为已启用。要检查状态,请在菜单中选择探索,选择您的 Tempo 数据源,然后展开选项部分。

The Explore screen shows the Tempo data source with streaming active

追踪到日志

追踪到日志设置配置了当您将 Grafana 与 Tempo 集成时可用的追踪到日志功能。追踪到日志也可以与其他追踪数据源(例如 Jaeger 和 Zipkin)一起使用。

Trace to logs settings

您可以配置自定义查询,在其中使用模板语言来插值追踪或 Span 中的变量。

配置自定义查询

  1. 从下拉列表中选择目标数据源。

    您也可以点击打开高级数据源选择器以查看更多选项,包括添加数据源。

  2. 设置开始和结束时间偏移。由于日志时间戳可能与追踪中 Span 的时间戳不完全匹配,因此可能需要扩大或移动时间范围以找到所需的日志。

  3. 可选:选择要映射的标签。这些标签可以在自定义查询中使用 ${__tags} 变量。此变量以适用于数据源的适当语法将映射的标签作为列表进行插值。仅包含 Span 中存在的标签;不存在的标签将被忽略。您还可以为标签配置新的名称。这在标签名称中包含点且目标数据源不允许在标签中包含点的情况下非常有用。例如,您可以将 http.status 重新映射到 http_status。如果您未在此处映射任何标签,您仍然可以在查询中使用任何标签,例如 method="${__span.tags.method}"。您可以在此处了解更多关于自定义查询变量的信息。

  4. 跳过按追踪 ID 过滤按 Span ID 过滤设置,因为它们不能与自定义查询一起使用。

  5. 开启使用自定义查询

  6. 指定用于查询日志的自定义查询。您可以使用各种变量使查询与当前 Span 相关。仅当所有变量都插值为非空值时才会显示链接,以防止创建无效查询。

配置追踪到日志

下表描述了您可以配置追踪到日志设置的方式

设置名称描述
数据源定义目标数据源。您可以选择 Loki 或任何兼容的日志存储。
Span 开始时间偏移基于 Span 的开始时间,偏移日志查询的开始时间。您可以使用时间单位,例如5s1m3h。要将时间扩展到过去,请使用负值。默认值:0
Span 结束时间偏移基于 Span 的结束时间,偏移日志查询的结束时间。您可以使用时间单位。默认值:0
标签定义在日志查询中使用的标签。默认值:clusterhostnamenamespacepodservice.nameservice.namespace。您可以更改标签名称,例如删除名称中的点,如果目标数据源不允许在标签中使用点。例如,将 http.status 映射到 http_status
按追踪 ID 过滤切换是否将追踪 ID 附加到日志查询。
按 Span ID 过滤切换是否将 Span ID 附加到日志查询。
使用自定义查询切换是否使用带插值的自定义查询。
查询用于编写自定义查询的输入框。使用变量插值,通过 Span 中的变量进行自定义。

追踪到指标

追踪到指标设置配置了当您将 Grafana 与 Tempo 集成时可用的追踪到指标功能

配置追踪到指标功能有两种方式

  • 使用带默认查询的基本配置,或者
  • 配置一个或多个自定义查询,在其中使用模板语言来插值追踪或 Span 中的变量。

有关可用选项,请参阅追踪到指标配置选项部分。

Trace to metrics settings in the Tempo data source

设置简单配置

要使用简单配置,请按照以下步骤操作

  1. 数据源下拉列表中选择一个指标数据源。

  2. 可选:更改Span 开始时间偏移Span 结束时间偏移。您可以更改其中一个或两个设置。默认开始时间偏移为 -2 分钟,结束时间偏移为 2 分钟。

  3. 可选:选择要在查询中使用的任何标签。如果留空,则使用默认值 clusterhostnamenamespacepodservice.nameservice.namespace

    您配置的标签必须存在于 Span 属性或资源中,追踪到指标的 Span 链接才会出现。您可以选择性地为标签配置一个新的名称。例如,如果标签名称中包含点且目标数据源不允许在标签中使用点,则这非常有用。在这种情况下,您可以将 service.name 重新映射到 service_name

  4. 不要选择添加查询

  5. 选择保存并测试

设置自定义查询

要使用自定义查询,您需要配置要在链接查询中包含的标签。对于每个标签,键是 Span 属性名称。如果属性名称会导致无效的指标查询或与所需的标签名称不完全匹配,您可以将标签名称作为第二个值输入。例如,您可以将属性 k8s.pod 映射到标签 pod

您可以使用 $__tags 关键字插值配置的标签。例如,当您配置查询 requests_total{$__tags},并使用标签 k8s.pod=podcluster 时,结果将是 requests_total{pod="nginx-554b9", cluster="us-east-1"}。标签值会根据 Span 属性的值动态插入。

您可以链接到任何您想要的指标,但是按服务或 Span 过滤的 Span 持续时间、计数和错误指标是一个很好的起点。

要在配置中使用自定义查询,请按照以下步骤操作

  1. 数据源下拉列表中选择一个指标数据源。

  2. 可选:选择要在查询中使用的任何标签。如果留空,则使用默认值 clusterhostnamenamespacepodservice.nameservice.namespace

    这些标签可以在自定义查询中使用 ${__tags} 变量。此变量以适用于数据源的适当语法将映射的标签作为列表进行插值,并且仅包含 Span 中存在的标签,省略那些不存在的标签。您可以选择性地为标签配置一个新的名称。这在标签名称中包含点且目标数据源不允许在标签中使用点的情况下非常有用。例如,在这种情况下,您可以将 service.name 重新映射到 service_name。如果您未在此处映射任何标签,您仍然可以在查询中使用任何标签,例如 method="${__span.tags.method}"。您可以在此处了解更多关于自定义查询变量的信息。

  3. 点击添加查询以添加自定义查询。

  4. 指定用于查询指标数据的自定义查询。

    每个链接的查询包含

    • 链接标签: (可选) 链接查询的描述性标签。
    • 查询: 从追踪导航到指标数据源时运行的查询。使用 $__tags 关键字插值标签。例如,当您配置查询 requests_total{$__tags},并使用标签 k8s.pod=podcluster 时,结果如下所示:requests_total{pod="nginx-554b9", cluster="us-east-1"}
  5. 选择保存并测试

追踪到指标配置选项

设置名称描述
数据源定义目标数据源。
Span 开始时间偏移基于 Span 的开始时间,偏移指标查询的开始时间。您可以使用时间单位,例如5s1m3h。要将时间扩展到过去,请使用负值。默认值:0
Span 结束时间偏移基于 Span 的结束时间,偏移指标查询的结束时间。您可以使用时间单位。默认值:0
标签定义链接查询中使用的标签。键设置 Span 属性名称,可选值设置对应的指标标签名称。例如,您可以将 k8s.pod 映射到 pod。要将这些标签插值到查询中,请使用 $__tags 关键字。
链接标签(可选) 链接查询的描述性标签。
查询用于编写自定义查询的输入框。使用变量插值,通过 Span 中的变量进行自定义。

追踪到性能剖析

通过追踪到性能剖析功能,您可以利用 Grafana 关联不同信号的能力,添加追踪和性能剖析之间的链接功能。

追踪到性能剖析允许您将 Grafana Pyroscope 数据源链接到追踪数据。配置后,此连接使您能够使用探索从追踪 Span 运行查询到性能剖析数据。每个 Span 都会链接到您的查询。点击链接会在拆分面板中运行查询。如果配置了标签,Grafana 会将 Span 属性值动态插入到查询中。查询会在时间范围(Span 开始时间 - 60 秒)到(Span 结束时间 + 60 秒)内运行。

嵌入式火焰图也会被插入到每个具有链接性能剖析的 Span 详细信息部分。这使得您无需离开当前视图即可查看每个 Span 的资源消耗火焰图可视化。

配置追踪到性能剖析功能有两种方式

  • 使用带默认查询的基本配置,或者
  • 配置一个自定义查询,在其中使用模板语言来插值追踪或 Span 中的变量。

Traces to profiles section in the Tempo data source

开始之前

追踪到性能剖析需要配置了追踪到性能剖析的 Tempo 数据源以及Grafana Pyroscope 数据源

与追踪一样,您的应用程序需要经过插桩才能发出性能剖析数据。有关更多信息,请参阅将追踪和性能剖析与 Span 性能剖析链接

使用基本配置

要使用基本配置,请按照以下步骤操作

  1. 在左侧菜单中,选择连接 > 数据源

  2. 数据源列表中选择您已配置的 Tempo 数据源。

  3. 向下滚动到追踪到性能剖析部分。

  4. 数据源下拉列表中选择一个 Pyroscope 数据源。

  5. 可选:添加一个或多个要在查询中使用的标签。如果留空,则使用默认值 service.nameservice.namespace

    您配置的标签必须存在于 Span 属性或资源中,追踪到性能剖析的 Span 链接才会出现。

    您可以选择性地为标签配置一个新的名称。如果标签名称中包含点且目标数据源不允许在标签中使用点,则这非常有用。在这种情况下,您可以将 service.name 重新映射到 service_name

  6. 选择一个或多个要在查询中使用的性能剖析类型。选择下拉列表并从菜单中选择选项。

    必须选择性能剖析类型或应用程序,查询才有效。如果在运行查询时未选择性能剖析类型或应用程序,Grafana 将不会显示任何数据。

  7. 选择保存并测试

如果您已配置 Pyroscope 数据源且没有性能剖析数据可用,或者此 Span 的性能剖析按钮和嵌入式火焰图不可见,请验证 pyroscope.profile.id 键值对是否存在于您的 Span 标签中。

配置自定义查询

要在配置中使用自定义查询,请按照以下步骤操作

  1. 在左侧菜单中,选择连接 > 数据源

  2. 数据源列表中选择已配置的 Tempo 数据源。

  3. 向下滚动到追踪到性能剖析部分。

  4. 数据源下拉列表中选择一个 Pyroscope 数据源。

  5. 可选:选择要在查询中使用的任何标签。如果留空,则使用默认值 service.nameservice.namespace

    这些标签可以在自定义查询中使用 ${__tags} 变量。此变量以适用于数据源的适当语法将映射的标签作为列表进行插值。仅包含 Span 中存在的标签。不存在的标签将被省略。

    您还可以为标签配置一个名称。如果标签名称中包含点且目标数据源不允许在标签中使用点,则标签名称非常有用。例如,您可以将 service.name 重新映射到 service_name。如果您未在此处映射任何标签,您仍然可以在查询中使用任何标签,例如:method="${__span.tags.method}"。了解更多关于自定义查询变量的信息。

  6. 选择一个或多个要在查询中使用的性能剖析类型。选择下拉列表并从菜单中选择选项。

  7. 开启使用自定义查询以输入自定义查询。

  8. 指定用于查询性能剖析数据的自定义查询。您可以使用各种变量使查询与当前 Span 相关。仅当所有变量都插值为非空值时才会显示链接,以防止创建无效查询。您可以使用 $__tags 关键字插值配置的标签。

  9. 选择保存并测试

配置选项

下表描述了配置追踪到性能剖析设置的选项

设置名称描述
数据源定义目标数据源。您可以选择一个 Pyroscope [性能剖析] 数据源。
标签定义在性能剖析查询中使用的标签。默认值:clusterhostnamenamespacepodservice.nameservice.namespace。您可以更改标签名称,例如删除名称中的点,如果目标数据源不允许在标签中使用点。例如,将 http.status 映射到 http_status
性能剖析类型定义在查询中使用的性能剖析类型。
使用自定义查询切换是否使用带插值的自定义查询。
查询用于编写自定义查询的输入框。使用变量插值,通过 Span 中的变量进行自定义。

自定义查询变量

要在您的追踪到日志、指标或性能剖析中使用变量,您需要将其用 ${} 包裹起来。例如,${__span.name}

变量名称描述
__tags此变量使用 UI 中的标签映射,以特定数据源语法创建标签匹配器字符串。该变量仅使用 Span 中存在的标签。即使 Span 中仅存在这些标签中的一个,链接也会创建。如果查询有用不需要所有标签,您可以使用此变量。
__span.spanIdSpan 的 ID。
__span.traceId追踪的 ID。
__span.durationSpan 的持续时间。
__span.nameSpan 的名称。
__span.tagsSpan 中标签的命名空间。要访问名为 version 的特定标签,您可以使用 ${__span.tags.version}。如果标签包含点,则必须将其作为 ${__span.tags["http.status"]} 访问。
__trace.traceId追踪的 ID。
追踪的持续时间。__trace.duration
__trace.name跟踪名称。

附加设置

使用向下箭头展开附加设置部分以查看这些选项。

高级 HTTP 设置

Grafana 代理会删除转发的 Cookie。使用允许的 Cookie字段按名称指定应转发到数据源的 Cookie。

超时字段以秒为单位设置 HTTP 请求超时。

服务图

服务图设置配置服务图数据。

配置数据源设置以定义服务图数据存储在哪个 Prometheus 实例中。

要使用服务图,请参阅服务图文档

节点图

节点图设置启用节点图可视化,该可视化默认未激活。

激活后,Grafana 会在跟踪视图上方显示节点图。

搜索设置配置Tempo 搜索

您可以配置隐藏搜索设置,以便在 Tempo 实例中未配置搜索时,在探索中隐藏搜索查询选项。

TraceID 查询

TraceID 查询设置修改 TraceID 查询的运行方式。在出现性能问题或超时时可以使用时间范围,因为它将搜索范围缩小到定义的范围。此设置默认禁用。

您可以按如下方式配置此设置

名称描述
启用时间范围在 TraceID 查询中使用时间范围。默认值:disabled
时间偏移开始搜索开始时间偏移。默认值:30m
时间偏移结束搜索结束时间偏移。默认值:30m

Span 条

Span 条设置可帮助您在 span 条行中显示附加信息。

您可以选择以下三个选项之一

名称描述
不在 span 条行中添加任何内容。
持续时间(默认)在 span 条行中显示 span 持续时间。
Tag在 span 条行中显示 span tag。您还必须指定用于获取 tag 值的 tag 键,例如 component

Tag 限制

Tag 限制设置修改从 Tempo 中检索的最大 tag 数量和 tag 值。默认值:5000

私有数据源连接

注意

此功能仅在 Grafana Cloud 中可用。

使用私有数据源连接 (PDC) 连接并查询安全网络中的数据,而无需向 Grafana Cloud 的入站流量开放该网络。

有关 PDC 工作原理的更多信息,请参阅私有数据源连接,有关设置 PDC 连接的步骤,请参阅配置 Grafana 私有数据源连接 (PDC)

使用下拉列表选择已配置的私有数据源。如果您进行了更改,选择测试并保存以保留您的更改。

使用管理私有数据源连接来配置和管理您已配置的任何私有数据源。

预配数据源

您可以在 YAML 文件中定义和配置 Tempo 数据源,作为 Grafana 预配系统的一部分。预配主要用于不使用 Grafana Cloud 的 Grafana 实例。

您可以使用版本控制工具(如 Git)来跟踪和管理文件更改。更改可以根据需要进行更新或回滚。

有关预配和可用配置选项的更多信息,请参阅预配 Grafana

注意

您无法使用 Grafana 中的 Tempo 数据源设置修改已预配的数据源。Grafana 会为已预配的数据源显示一条消息。

示例文件

此示例预配 YAML 文件设置了 Tempo 数据源用户界面中可用选项的等效配置。

yaml
apiVersion: 1

datasources:
  - name: Tempo
    type: tempo
    uid: EbPG8fYoz
    url: https://:3200
    access: proxy
    basicAuth: false
    jsonData:
      tracesToLogsV2:
        # Field with an internal link pointing to a logs data source in Grafana.
        # datasourceUid value must match the uid value of the logs data source.
        datasourceUid: 'loki'
        spanStartTimeShift: '-1h'
        spanEndTimeShift: '1h'
        tags: ['job', 'instance', 'pod', 'namespace']
        filterByTraceID: false
        filterBySpanID: false
        customQuery: true
        query: 'method="$${__span.tags.method}"'
      tracesToMetrics:
        datasourceUid: 'prom'
        spanStartTimeShift: '-1h'
        spanEndTimeShift: '1h'
        tags: [{ key: 'service.name', value: 'service' }, { key: 'job' }]
        queries:
          - name: 'Sample query'
            query: 'sum(rate(traces_spanmetrics_latency_bucket{$$__tags}[5m]))'
      tracesToProfiles:
        datasourceUid: 'grafana-pyroscope-datasource'
        tags: ['job', 'instance', 'pod', 'namespace']
        profileTypeId: 'process_cpu:cpu:nanoseconds:cpu:nanoseconds'
        customQuery: true
        query: 'method="$${__span.tags.method}"'
      serviceMap:
        datasourceUid: 'prometheus'
      nodeGraph:
        enabled: true
      search:
        hide: false
      traceQuery:
        timeShiftEnabled: true
        spanStartTimeShift: '-1h'
        spanEndTimeShift: '1h'
      spanBar:
        type: 'Tag'
        tag: 'http.path'
      streamingEnabled:
        search: true