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)。
配置数据源
配置数据源的基本设置,请完成以下步骤:
点击左侧菜单中的 Connections。
在 Your connections 下,点击 Data sources。
在搜索栏中输入
Zipkin
。选择 Zipkin。
显示数据源的 Settings 标签页。
设置数据源的基本配置选项
名称 描述 名称 设置在面板和查询中引用数据源时使用的名称。 默认 定义是否为新面板预选此数据源。 URL 设置 Zipkin 实例的 URL,例如 https://:9411
。基本认证 为 Zipkin 数据源启用基本认证。 用户名 定义基本认证的用户名。 密码 定义基本认证的密码。
追踪到日志
注意
如果您使用 Grafana Cloud,请在 Cloud Portal 中提交支持工单以访问此功能。
Trace to logs 设置配置了与 Zipkin 集成时可用的追踪到日志功能。
有两种配置追踪到日志功能的方法:
- 使用带有默认查询的简化配置,或
- 配置一个自定义查询,您可以在其中使用模板语言插值追踪或 span 中的变量。
使用简单配置
从下拉列表中选择目标数据源。
您也可以点击 Open advanced data source picker 查看更多选项,包括添加数据源。
设置开始和结束时间偏移。由于日志时间戳可能与追踪中的 span 时间戳不完全匹配,因此可能需要在更大或偏移的时间范围内搜索以找到所需的日志。
选择要在日志查询中使用的标签。您配置的标签必须存在于 span 属性或资源中,才能显示追踪到日志的 span 链接。您可以选择性地配置标签的新名称。如果标签名称中包含点号且目标数据源不允许在标签中使用点号,这将很有用。在这种情况下,您可以将
http.status
重映射为http_status
。(可选)打开 Filter by trace ID 和/或 **Filter by span ID** 设置,如果您的日志始终包含追踪或 span ID,则可以进一步过滤日志。
配置自定义查询
从下拉列表中选择目标数据源。
您也可以点击 Open advanced data source picker 查看更多选项,包括添加数据源。
设置开始和结束时间偏移。由于日志时间戳可能与追踪中 span 的时间戳不完全匹配,您可能需要扩大或偏移时间范围以找到所需的日志。
(可选)选择要映射的标签。这些标签可以在自定义查询中使用
${__tags}
变量。此变量将以适合数据源的语法插值映射的标签列表,并且仅包含 span 中存在的标签,省略不存在的标签。您可以选择性地配置标签的新名称。如果标签名称中包含点号且目标数据源不允许在标签中使用点号,这将很有用。例如,您可以将http.status
重映射为http_status
。如果您此处未映射任何标签,仍然可以在查询中使用任何标签,例如method="${__span.tags.method}"
。跳过 **Filter by trace ID** 和 **Filter by span ID** 设置,因为这些设置不能与自定义查询一起使用。
开启 **Use custom query**。
指定一个用于查询日志的自定义查询。您可以使用各种变量,使查询与当前 span 相关。只有当所有变量都插值为非空值时,才会显示链接,以防止创建无效查询。
可在自定义查询中使用的变量
要使用变量,需要将其用 ${}
包裹。例如 ${__span.name}
。
变量名 | 描述 |
---|---|
__tags | 此变量使用 UI 中的标签映射,以特定数据源语法创建标签匹配字符串。该变量仅使用 span 中存在的标签。即使 span 中只存在其中一个标签,链接仍然会创建。如果查询不需要所有标签才能有用,则可以使用此变量。 |
__span.spanId | span 的 ID。 |
__span.traceId | 追踪的 ID。 |
__span.duration | span 的时长。 |
__span.name | span 的名称。 |
__span.tags | span 中标签的命名空间。要访问名为 version 的特定标签,您将使用 ${__span.tags.version} 。如果标签包含点号,您必须将其访问为 ${__span.tags["http.status"]} 。 |
__trace.traceId | 追踪的 ID。 |
__trace.duration | 追踪的时长。 |
__trace.name | 追踪的名称。 |
下表描述了配置追踪到日志设置的方式:
设置名称 | 描述 |
---|---|
数据源 | 定义目标数据源。您只能选择 Loki 或 Splunk 日志数据源。 |
Span 开始时间偏移 | 偏移日志查询的开始时间,基于 span 的开始时间。您可以使用时间单位,例如 5s 、1m 、3h 。要将时间延长到过去,请使用负值。默认值: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 设置配置了与 Zipkin 集成时可用的追踪到指标功能。
配置追踪到指标:
从下拉列表中选择目标数据源。
您也可以点击 Open advanced data source picker 查看更多选项,包括添加数据源。
创建任何所需的链接查询。
设置名称 | 描述 |
---|---|
数据源 | 定义目标数据源。 |
标签 | 定义链接查询中使用的标签。键设置 span 属性名称,可选值设置相应的指标标签名称。例如,您可以将 k8s.pod 映射到 pod 。要将这些标签插值到查询中,请使用 $__tags 关键字。 |
每个链接查询包含:
- Link Label: (可选)链接查询的描述性标签。
- Query: 当从追踪导航到指标数据源时运行的查询。使用
$__tags
关键字插值标签。例如,当您配置查询requests_total{$__tags}
并带有标签k8s.pod=pod
和cluster
时,结果将如下所示: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。
供应示例
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 查询
- 要查询特定追踪:
- 选择 **TraceID** 查询类型。

Zipkin 查询编辑器截图
按追踪选择器查询
- 要从您在 Explore 中选定的时间范围内记录的所有追踪中选择特定追踪,您也可以按追踪选择器查询。追踪选择器有三个嵌套级别:
- 您感兴趣的服务。
- 所选服务的特定操作

Zipkin 查询编辑器展开追踪选择器的截图
在追踪 UI 中查看数据映射
您可以在追踪视图中将 Zipkin 注解作为日志查看,并在注解键下显示注解值。
上传 JSON 追踪文件

在 Explore 中选择上传 Zipkin 数据源的截图
[
{
"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
}
]
使用 span 过滤器,您可以在追踪时间线查看器中过滤 span。添加的过滤器越多,过滤出的 span 就越精确。
Span 过滤器
- 使用 span 过滤器,您可以在追踪时间线查看器中过滤 span。添加的过滤器越多,过滤出的 span 就越具体。
- 您可以添加一个或多个以下过滤器:
- 时长
- 服务名称
Span 名称
标签(包括标签、进程标签和日志字段)
只显示匹配的 span,您可以按下 Show matches only
开关。
从日志链接到追踪 ID
您可以通过配置内部链接,从 Loki、Elasticsearch、Splunk 和其他日志数据源中的日志链接到 Zipkin 追踪。
要配置此功能,请参阅 Loki 数据源文档的派生字段部分或 Elasticsearch 或 Splunk 数据源文档的数据链接部分。
从指标链接到追踪 ID