菜单
Grafana Cloud Enterprise Open source RSS

Jaeger 数据源

Grafana 内置支持 Jaeger,这是一个提供开源、端到端分布式追踪的系统。本主题解释了 Jaeger 数据源特定的配置和查询。

有关如何在 Grafana 中添加数据源的说明,请参阅管理文档。只有具有组织管理员角色的用户才能添加数据源。管理员还可以通过 Grafana 的 provisioning 系统使用 YAML 配置数据源

添加数据源后,您可以配置它,以便 Grafana 实例的用户在构建仪表盘和使用 Explore 时,可以在查询编辑器中创建查询。

您还可以上传 JSON 追踪文件从日志链接到追踪 ID,以及从指标链接到追踪 ID

配置数据源

要配置数据源的基本设置,请完成以下步骤:

  1. 单击左侧菜单中的Connections

  2. 在 Your connections 下,点击Data sources

  3. 在搜索栏中输入 Jaeger

  4. 选择 Jaeger

    将显示数据源的Settings标签页。

  5. 设置数据源的基本配置选项

    名称描述
    名称设置您在面板和查询中引用数据源时使用的名称。
    默认定义此数据源是否为新面板预先选择。
    URL设置 Jaeger 实例的 URL,例如 https://:16686
    基本认证启用 Jaeger 数据源的基本认证。
    用户定义基本认证的用户名。
    密码定义基本认证的密码。

您还可以配置 Jaeger 数据源特定的设置。这些选项将在下面的章节中描述。

追踪到日志

Trace to logs settings

注意

如果您使用 Grafana Cloud,请在 Cloud Portal 中开启支持工单来访问此功能。

Trace to logs(追踪到日志)设置配置了与 Jaeger 集成时可用的追踪到日志功能

有两种方式配置追踪到日志功能:

  • 使用带有默认查询的简化配置,或
  • 配置一个自定义查询,您可以使用模板语言来插入追踪或 span 中的变量。

使用简单配置

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

    您还可以点击Open advanced data source picker查看更多选项,包括添加数据源。

  2. 设置起始和结束时间偏移。由于日志时间戳可能与追踪中的 span 时间戳不完全匹配,因此可能需要在更大或偏移的时间范围内搜索以找到所需的日志。

  3. 选择在日志查询中使用的标签。您配置的标签必须存在于 span 属性或资源中,才能显示追踪到日志的 span 链接。您可以选择为标签配置新名称。这对于标签名称中包含点且目标数据源不允许标签中包含点的情况非常有用。在这种情况下,您可以例如将 http.status 重映射到 http_status

  4. (可选)打开Filter by trace ID(按追踪 ID 过滤)和/或Filter by span ID(按 span ID 过滤)设置,以便在您的日志一致包含追踪或 span ID 时进一步过滤日志。

配置自定义查询

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

    您还可以点击Open advanced data source picker查看更多选项,包括添加数据源。

  2. 设置起始和结束时间偏移。由于日志时间戳可能与追踪中的 span 时间戳不完全匹配,您可能需要加宽或偏移时间范围才能找到所需的日志。

  3. (可选)选择要映射的标签。这些标签可以在自定义查询中使用 ${__tags} 变量。此变量将以适合目标数据源的语法将映射的标签列表插值进去,并且只会包含 span 中存在的标签,省略不存在的标签。您可以选择为标签配置新名称。这对于标签名称中包含点且目标数据源不允许标签中包含点的情况非常有用。例如,您可以将 http.status 重映射到 http_status。如果您在这里不映射任何标签,您仍然可以在查询中使用任何标签,例如 method="${__span.tags.method}"

  4. 跳过Filter by trace ID(按追踪 ID 过滤)和Filter by span ID(按 span ID 过滤)设置,因为它们不能与自定义查询一起使用。

  5. 开启Use custom query(使用自定义查询)。

  6. 指定用于查询日志的自定义查询。您可以使用各种变量来使查询与当前 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追踪的名称。

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

设置名称描述
数据源定义目标数据源。只能选择 Loki 或 Splunk 日志数据源。
Span 起始时间偏移基于 span 的起始时间偏移日志查询的起始时间。可以使用时间单位,例如 5s1m3h。要将时间范围扩展到过去,请使用负值。默认值:0
Span 结束时间偏移基于 span 的结束时间偏移日志查询的结束时间。可以使用时间单位。默认值:0
标签定义日志查询中使用的标签。默认值:cluster, hostname, namespace, pod, service.name, service.namespace。您可以更改标签名称,例如,如果目标数据源不允许标签名称中包含点,则可以移除点。例如,将 http.status 映射到 http_status
按追踪 ID 过滤切换是否将追踪 ID 附加到日志查询。
按 Span ID 过滤切换是否将 span ID 附加到日志查询。
使用自定义查询切换是否使用自定义查询并进行插值。
查询输入框,用于编写自定义查询。使用变量插值来自定义,使用 span 中的变量。

追踪到指标

Trace to metrics(追踪到指标)设置配置了与 Jaeger 集成时可用的追踪到指标功能

要配置追踪到指标:

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

    您还可以点击Open advanced data source picker查看更多选项,包括添加数据源。

  2. 创建任何所需的链接查询。

设置名称描述
数据源定义链接查询中使用的标签。键设置 span 属性名称,可选值设置对应的指标标签名称。例如,您可以将 k8s.pod 映射到 pod。要将这些标签插值到查询中,请使用 $__tags 关键字。
标签定义链接查询中使用的标签。键设置 span 属性名称,可选值设置相应的指标标签名称。例如,您可以将 k8s.pod 映射到 pod。要在查询中插入这些标签,请使用 $__tags 关键字。

每个链接查询包含:

  • Link Label: (可选)链接查询的描述性标签。
  • Query: 当从追踪导航到指标数据源时运行的查询。使用 $__tags 关键字插值标签。例如,当您配置查询 requests_total{$__tags} 并带有标签 k8s.pod=podcluster 时,结果类似于 requests_total{pod="nginx-554b9", cluster="us-east-1"}

节点图

Node Graph(节点图)设置启用了节点图可视化,此功能默认禁用。

启用后,Grafana 会在追踪视图上方显示节点图。

Span 条

Span bar(Span 条)设置有助于在 span 条行中显示额外信息。

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

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

供应数据源

您可以将数据源定义和配置在 YAML 文件中,作为 Grafana provisioning 系统的一部分。有关 provisioning 和可用配置选项的更多信息,请参阅供应 Grafana

供应示例

yaml
apiVersion: 1

datasources:
  - name: Jaeger
    type: jaeger
    uid: EbPG8fYoz
    url: https://:16686
    access: proxy
    basicAuth: true
    basicAuthUser: my_user
    readOnly: false
    isDefault: 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]))'
      nodeGraph:
        enabled: true
      traceQuery:
        timeShiftEnabled: true
        spanStartTimeShift: '1h'
        spanEndTimeShift: '-1h'
      spanBar:
        type: 'None'
    secureJsonData:
      basicAuthPassword: my_password

查询数据源

您可以通过 Explore 查询和显示来自 Jaeger 的追踪。

本主题解释了 Jaeger 数据源特定的配置和查询。有关在 Grafana 中查询数据源的一般文档,请参阅查询和转换数据

要搜索追踪:

  1. Query类型选择器中选择Search
  2. 填写搜索表单:
名称描述
服务返回服务列表。
操作当您选择一个服务时,会填充相关的操作。选择 All 查询所有操作。
标签logfmt 格式设置带有值的标签,例如 error=true db.statement="select * from User"
最小持续时间过滤持续时间高于设定值的所有追踪。可能的值为 1.2s, 100ms, 500us
最大持续时间过滤持续时间低于设定值的所有追踪。可能的值为 1.2s, 100ms, 500us
限制限制返回的追踪数量。
Screenshot of the Jaeger query editor
Jaeger 查询编辑器截图

按追踪 ID 查询

要查询特定追踪:

  1. 选择 TraceID 查询类型。
  2. Trace ID 字段中输入追踪的 ID。
Screenshot of the Jaeger query editor with TraceID selected
在 Explore 中选择 TraceID 的 Jaeger 查询编辑器截图

上传 JSON 追踪文件

您可以上传一个包含单个追踪的 JSON 文件并将其可视化。如果文件包含多个追踪,Grafana 将可视化其第一个追踪。

Screenshot of the Jaeger data source in explore with upload selected
在 Explore 中选择上传的 Jaeger 数据源截图

JSON 追踪示例

json
{
  "data": [
    {
      "traceID": "2ee9739529395e31",
      "spans": [
        {
          "traceID": "2ee9739529395e31",
          "spanID": "2ee9739529395e31",
          "flags": 1,
          "operationName": "CAS",
          "references": [],
          "startTime": 1616095319593196,
          "duration": 1004,
          "tags": [
            {
              "key": "sampler.type",
              "type": "string",
              "value": "const"
            }
          ],
          "logs": [],
          "processID": "p1",
          "warnings": null
        }
      ],
      "processes": {
        "p1": {
          "serviceName": "loki-all",
          "tags": [
            {
              "key": "jaeger.version",
              "type": "string",
              "value": "Go-2.25.0"
            }
          ]
        }
      },
      "warnings": null
    }
  ],
  "total": 0,
  "limit": 0,
  "offset": 0,
  "errors": null
}

Span 过滤器

Screenshot of span filtering

使用 span 过滤器,您可以在追踪时间线查看器中过滤您的 span。您添加的过滤器越多,过滤后的 span 就越具体。

您可以添加以下一个或多个过滤器

  • 服务名称
  • Span 名称
  • 持续时间
  • 标签(包括标签、进程标签和日志字段)

要仅显示您匹配的 span,您可以按下 仅显示匹配项 开关。

通过配置内部链接,您可以从 Loki、Elasticsearch、Splunk 和其他日志数据源中的日志链接到 Jaeger 追踪。

要配置此功能,请参阅 Loki 数据源文档的派生字段部分,或 Elasticsearch 或 Splunk 数据源文档的数据链接部分。

通过配置 exemplar(范例),您可以从 Prometheus 数据源中的指标链接到 Jaeger 追踪。

要配置此功能,请参阅exemplar(范例)简介文档。

可视化依赖关系图

如果在 Jaeger 中提供了服务依赖信息,则可以在 Grafana 中将其可视化。为此,请在节点图面板上使用查询类型为“依赖关系图”的 Jaeger 数据源。