Grafana内置了对Jaeger的支持,它提供了开源的端到端分布式跟踪。本文解释了针对Jaeger数据源的配置和查询。
关键的配置如下:
http://localhost:16686
或 http://localhost:16686/trace/
Span bar 设置帮助你在 span 行中显示额外的信息。
你可以从三个选项中选择一个:
Name | Description |
---|---|
None | 啥都不加. |
Duration | (默认) 在Span 行上显示 span 持续时间。 |
Tag | 在 span 行上显示 span tag。你还必须指定使用哪个标签键来获取标签值,如span.kind 。 |
📝Notes:
Trace to logs 功能只支持部分日志解决方案
Grafana Loki 和 Splunk 是支持的, ElasticSearch 是不支持的.
Trace to logs 设置配置了 traces 到 logs 的功能,当你将 Grafana 与 Jaeger 整合时,该功能是可用的。
有两种方法可以配置 trace 到 logs 的功能:
http.status
改成http_status
。${__tags}
变量在自定义查询中使用。这个变量将以适当的语法为数据源插值映射的标签,并只包括 span 中存在的标签,省略那些不存在的标签。您可以选择为标签配置一个新的名称。这在标签的名称中有圆点而目标数据源不允许标签中有圆点的情况下很有用。例如,你可以将 http.status
重新映射为 http_status
。如果你不在这里映射任何标签,你仍然可以在查询中使用任何标签,比如method="${__span.tags.method}"
。要使用一个变量,你需要用${}
来包裹它。例如:${__span.name}
。
Variable name | Description |
---|---|
__tags | 该变量使用来自用户界面的标签映射,以特定的数据源语法创建一个标签匹配器字符串。该变量只使用 span 中存在的标签。即使这些标签中只有一个存在于 span 中,链接仍然被创建。如果查询不需要所有的标签,你可以使用这个。 |
__span.spanId | Span 的 ID |
__span.traceId | Trace 的 ID |
__span.duration | Span 的持续时间 |
__span.name | Span 的名称 |
__span.tags | span中标签的命名空间。要访问一个名为 "version" 的特定标签,你可以使用${__span.tags.version} 。如果标签包含点,你必须以${__span.tags["http.status"]} 的方式访问它。 |
__trace.traceId | Trace 的 ID |
__trace.duration | Trace 的持续时间 |
__trace.name | Trace 的名称 |
下表描述了你可以配置 Trace to logs 设置的方式:
Setting name | Description |
---|---|
Data source | 定义目标数据源。你可以只选择Loki或Splunk logs 数据源。 |
Span start time shift | 根据 span 的开始时间,偏移日志查询的开始时间。你可以使用时间单位,如5s ,1m ,3h 。要把时间延长到过去,则使用一个负值。默认值:0 。 |
Span end time shift | 根据 span 的结束时间,转移日志查询的结束时间。你可以使用时间单位。默认:0 。 |
Tags | 定义了在日志查询中使用的标签。默认:cluster , hostname , namespace , pod 。你可以改变标签的名称,例如,如果目标数据源中不允许使用点,可以从名称中删除点。例如,将http.status 映射为http_status 。 |
Filter by trace ID | 切换是否在日志查询中附加trace ID。 |
Filter by span ID | 切换是否将span ID附加到日志查询中。 |
Use custom query | 切换可以使用插值的自定义查询。 |
Query | 输入来编写自定义查询。使用变量插值,用 span 的变量来定制它。 |
📝Notes:
需要配置 feature toggle 的traceToMetrics
后可见.
Trace to metrics 设置配置了 Grafana 与 Jaeger 集成时可用的 trace 到 metrics 功能。
要配置 trace to metrics:
Setting name | Description |
---|---|
Data source | 定义目标数据源. |
Tags | 定义了链接查询中使用的标签。键值设置 span 属性名称,可选值设置相应的metric 标签名称。例如,你可以将k8s.pod 映射为pod 。要把这些标签插进查询中,请使用$__tags 关键字。 |
每个链接查询包括:
$__tags
关键字对标签进行插值。例如,当你配置查询 requests_total{$__tags}
时,标签为k8s.pod=pod
和cluster
,结果看起来像requests_total{pod="nginx-554b9", cluster="us-east-1"}
。Jaeger 数据源配置示例 YAML 如下:
apiVersion: 1 datasources: - name: Jaeger type: jaeger uid: EbPG8fYoz url: http://localhost: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 spanBar: type: 'None' secureJsonData: basicAuthPassword: my_password
EOF
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.