共计 3734 个字符,预计需要花费 10 分钟才能阅读完成。
系列文章
- Grafana 系列文章
配置 Jaeger data source
Grafana 内置了对 Jaeger 的反对,它提供了开源的端到端分布式跟踪。本文解释了针对 Jaeger 数据源的配置和查问。
要害的配置如下:
- URL: Jaeger 实例的 URL, 如:
http://localhost:16686
或http://localhost:16686/trace/
- Enable Node Graph: ✔️. 一旦启用,Grafana 会在 trace 视图上方显示 Node Graph (链路拓扑图)。
Span bar
Span bar 设置帮忙你在 span 行中显示额定的信息。
你能够从三个选项中抉择一个:
Name | Description |
---|---|
None | 啥都不加. |
Duration | (默认) 在 Span 行上显示 span 持续时间。 |
Tag | 在 span 行上显示 span tag。你还必须指定应用哪个标签键来获取标签值,如span.kind 。 |
Trace to logs
📝Notes:
Trace to logs 性能只反对局部日志解决方案
Grafana Loki 和 Splunk 是反对的, ElasticSearch 是不反对的.
Trace to logs 设置配置了 traces 到 logs 的性能,当你将 Grafana 与 Jaeger 整合时,该性能是可用的。
有两种办法能够配置 trace 到 logs 的性能:
- 应用带有默认查问的简化配置,或
- 配置一个自定义查问,你能够应用模板语言从 trace 或 span 中插入变量。
应用简化配置
- 抉择指标数据源。
- 设置开始和完结工夫的偏移。因为日志的工夫戳可能与 trace 中的 span 的工夫戳不齐全匹配,可能须要在更大的或移位的工夫范畴内搜寻以找到所需的日志。
- 抉择要在日志查问中应用的标签。你配置的标签必须存在于 span 属性或资源中,能力呈现 trace 到 logs span 链接。你能够抉择为标签配置一个新的名字。如果标签的名称中有圆点,而指标数据源不容许标签中有圆点,这就很有用 (如上图)。在这种状况下,你能够,比如说,把
http.status
改成http_status
。 - 如果你的日志始终蕴含 trace ID 或 span ID,能够抉择关上 Filter by trace ID 和 / 或 Filter by span ID 的设置来进一步过滤日志。
应用自定义 Query
- 抉择指标数据源。
- 设置开始和完结工夫的偏移。因为日志的工夫戳可能与 trace 中的 span 的工夫戳不齐全匹配,你可能须要扩充或偏移工夫范畴以找到所需的日志。
- 可选地,抉择要映射的标签。这些标签能够用
${__tags}
变量在自定义查问中应用。这个变量将以适当的语法为数据源插值映射的标签,并只包含 span 中存在的标签,省略那些不存在的标签。您能够抉择为标签配置一个新的名称。这在标签的名称中有圆点而指标数据源不容许标签中有圆点的状况下很有用。例如,你能够将http.status
从新映射为http_status
。如果你不在这里映射任何标签,你依然能够在查问中应用任何标签,比方method="${__span.tags.method}"
。 - 跳过 Filter by trace ID 和 Filter by span ID 设置,因为它们不能用于自定义查问。
- 开启 Use custom query。
- 指定一个用于查问日志的自定义查问。你能够应用各种变量来使该查问与以后 span 相干。只有当所有的变量都以非空值插值时,该链接才会呈现,以避免创立一个有效的查问。
能够在自定义查问中应用的 Variables
要应用一个变量,你须要用 ${}
来包裹它。例如:${__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 的变量来定制它。 |
Trace to metrics
📝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 关键字。 |
每个链接查问包含:
- Link Label: (可选项) 链接查问的描述性标签。
- Query: 从 trace 跳转到 metric 数据源时运行的查问。应用
$__tags
关键字对标签进行插值。例如,当你配置查问requests_total{$__tags}
时,标签为k8s.pod=pod
和cluster
,后果看起来像requests_total{pod="nginx-554b9", cluster="us-east-1"}
。
Jaeger 数据源配置示例
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 编写.
正文完