菜单
Grafana Cloud Enterprise 开源 RSS

Zipkin 数据源

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

有关如何在 Grafana 中添加数据源的说明,请参阅[管理文档](/docs/grafana/latest/administration/data-source-management/)。只有具有组织管理员角色的用户才能添加数据源。管理员还可以通过 Grafana 的供应系统使用 [YAML 文件配置数据源](#provision-the-data-source)。

添加 Zipkin 数据源后,您可以[配置它](#configure-the-data-source),以便您的 Grafana 实例用户在[构建仪表盘](/docs/grafana/latest/dashboards/build-dashboards/)和使用 [Explore](#query-the-data-source) 时,可以在其[查询编辑器](#query-the-data-source)中创建查询。

您还可以[上传 JSON 追踪文件](#upload-a-json-trace-file),[从日志链接到追踪 ID](#link-to-a-trace-id-from-logs),以及[从指标链接到追踪 ID](#link-to-a-trace-id-from-metrics)。

配置数据源

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

  1. 点击左侧菜单中的 Connections

  2. 在 Your connections 下,点击 Data sources

  3. 在搜索栏中输入 Zipkin

  4. 选择 Zipkin

    显示数据源的 Settings 标签页。

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

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

追踪到日志

Trace to logs settings

注意

如果您使用 Grafana Cloud,请在 Cloud Portal 中提交支持工单以访问此功能。

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

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

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

使用简单配置

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

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

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

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

  4. (可选)打开 Filter by trace ID 和/或 **Filter by 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** 和 **Filter by 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
标签定义在日志查询中使用的标签。默认值:clusterhostnamenamespacepodservice.nameservice.namespace。您可以更改标签名称,例如在目标数据源不允许使用点号的情况下从名称中删除点号。例如,将 http.status 映射到 http_status
按追踪 ID 过滤切换是否将追踪 ID 追加到日志查询。
按 span ID 过滤切换是否将 span ID 追加到日志查询。
使用自定义查询切换是否使用带插值的自定义查询。
查询输入以编写自定义查询。使用变量插值根据 span 中的变量自定义查询。

追踪到指标

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

配置追踪到指标:

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

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

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

设置名称描述
数据源定义目标数据源。
标签定义链接查询中使用的标签。键设置 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 标签。您还必须指定使用哪个标签键来获取标签值,例如 component

供应数据源

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

供应示例

yaml
apiVersion: 1

datasources:
  - name: Zipkin
    type: zipkin
    uid: EbPG8fYoz
    url: https://:16686
    access: proxy
    basicAuth: true
    basicAuthUser: my_user
    readOnly: true
    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 查询和显示 Zipkin 中的追踪:

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

按追踪 ID 查询

  1. 要查询特定追踪:
  2. 选择 **TraceID** 查询类型。
Screenshot of the Zipkin query editor
在 **Trace ID** 字段中输入追踪的 ID。

Zipkin 查询编辑器截图

按追踪选择器查询

  • 要从您在 Explore 中选定的时间范围内记录的所有追踪中选择特定追踪,您也可以按追踪选择器查询。追踪选择器有三个嵌套级别:
  • 您感兴趣的服务。
  • 所选服务的特定操作
Screenshot of the Zipkin query editor with trace selector expanded
发生所选操作的特定追踪,由根操作名称和追踪时长表示

Zipkin 查询编辑器展开追踪选择器的截图

在追踪 UI 中查看数据映射

您可以在追踪视图中将 Zipkin 注解作为日志查看,并在注解键下显示注解值。

上传 JSON 追踪文件

Screenshot of the Zipkin data source in explore with upload selected
您可以上传包含单个追踪的 JSON 文件并将其可视化。如果文件包含多个追踪,Grafana 会可视化其第一个追踪。

在 Explore 中选择上传 Zipkin 数据源的截图

JSON 追踪示例
[
  {
    "traceId": "efe9cb8857f68c8f",
    "parentId": "efe9cb8857f68c8f",
    "id": "8608dc6ce5cafe8e",
    "kind": "SERVER",
    "name": "get /api",
    "timestamp": 1627975249601797,
    "duration": 23457,
    "localEndpoint": { "serviceName": "backend", "ipv4": "127.0.0.1", "port": 9000 },
    "tags": {
      "http.method": "GET",
      "http.path": "/api",
      "jaxrs.resource.class": "Resource",
      "jaxrs.resource.method": "printDate"
    },
    "shared": true
  }
]

json

Screenshot of span filtering

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

Span 过滤器

  • 使用 span 过滤器,您可以在追踪时间线查看器中过滤 span。添加的过滤器越多,过滤出的 span 就越具体。
  • 您可以添加一个或多个以下过滤器:
  • 时长
  • 服务名称

Span 名称

只显示匹配的 span,您可以按下 Show matches only 开关。

从日志链接到追踪 ID

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

从指标链接到追踪 ID