本篇文章讲述了如何将 loki 和 tempo 结合进行分布式追踪。 日志和trace结合使用的方案有很多,由于 loki 官方自带了 trace 结合的配置,不用进行过多的二次开发,所以这里采用 loki 和 tempo 结合的方案。

loki 和 tempo 是什么就不过多介绍,安装流程也省略。 这里主要讲如何配置。

配置

这里我们采用普遍的方案, 使用 grafana 来展示日志和 trace。

配置 loki

在 grafana , 打开数据源配置界面,新建 loki 数据源,并且配置好地址, 如下图所示点击 Save & Test, 如果配置正确,则会出现 Data source connected and labels found. 标志。

img.png

配置 tempo

同配置 loki 一致,新建 grafana 数据源,选择 tempo ,配置好相应的url 数据,点击测试,出现 Data source connected and labels found. 标志,就表示配置成功。

在 tempo 配置页面的底部可以看到一个配置栏目 Trace to logs , 可以选择相应的日志数据源,这里我们选择 loki.

img_1.png

使用

配置完成后,我们在 Explore 界面选择 loki , 搜寻相应的日志,如下图所示,可以看到相应的日志。

img_2.png

我们选择一条日志,查看结构化日志的字段,可以看到 trace_id, 但无法展示相应的 链路追踪。

解决

这是为什么呢,查看了相应的文档,发现 loki 默认的 trace id 字段名称为 TraceID . 其它字段不会进行相应的解析。

我们有2种方法:

1 修改应用程序的 log 的 trace id 字段名称,比如修改为 TraceID, 但这样如果应用较多的话,修改比较麻烦和消耗时间

2 添加 loki 数据源的 Derived fields 配置, 根据旧的 trace_id 字段派生出新的 TraceID 字段。

这里我们采用了第二种方法,具体配置如下:

img_3.png

配置完成后,我们重新打开日志查询界面,可以看到已经有了相应的按钮。

img_4.png

点击按钮,旁边会出现相应的链路。

img_5.png

小结