自动日志记录:通过日志发现跟踪
注意
Grafana Alloy 是我们分发的 OTel Collector 的新名称。Grafana Agent 已被弃用,并将在 2025 年 10 月 31 日之前进入长期支持 (LTS) 阶段。Grafana Agent 将于 2025 年 11 月 1 日达到生命周期结束 (EOL)。阅读更多关于我们建议迁移到 Grafana Alloy 的原因。
运行已进行埋点的分布式系统是深入理解系统的强大方式,但同时也带来了一些挑战。其中之一是如何发现存在的跟踪。
在 Tempo 早期,只有知道要查找的跟踪 ID 才能查询跟踪。自动日志记录是一种解决方案。自动日志记录提供了一种通过日志消息发现跟踪 ID 的简单快速方法。对于通过跟踪管道的每个 Span、Root 或 Process,都会将格式良好的日志行写入 Loki 实例或 stdout
。这使得自动构建跟踪发现机制成为可能。此外,您还可以使用 Loki 从跟踪中获取指标,并允许从日志消息快速跳转到 Grafana 中的跟踪视图。
虽然这种方法很有用,但它不如 TraceQL 强大。如果您在这里是因为知道想要记录跟踪 ID,以便能够从日志跳转到跟踪,那么请继续阅读!
如果您想直接查询系统,请阅读 TraceQL 文档。
配置
对于高吞吐系统,记录每个 Span 可能会产生太多数据量。在这种情况下,建议按 Root Span 或 Process 进行日志记录。
自动日志记录会在 Span 中查找给定的属性集,并将其作为键值对进行记录。这允许在 Loki 中按这些键值对进行搜索。
开始之前
注意
Grafana Alloy 提供了工具,可以将您的 Agent Static 或 Flow 配置文件转换为 Alloy 可用的格式。
更多信息,请参考 迁移到 Alloy。
要配置自动日志记录,您需要选择首选的后端和要记录的跟踪数据。
要查看所有可用的配置选项,请参考 配置参考。
这个简单示例将跟踪根记录到 stdout
,是开始使用自动日志记录的好方法
traces:
configs:
- name: default
...
automatic_logging:
backend: stdout
roots: true
此示例将日志直接推送到配置在同一 Grafana Agent 中的 Loki 实例。
traces:
configs:
- name: default
...
automatic_logging:
backend: logs_instance
logs_instance_name: default
roots: true