Opentelemetry:如何将日志添加到跨度

Opentelemetry: How to add logs to a span

我在 spring 启动应用程序中使用 OpenTelemetry java 自动检测。有没有办法让应用程序日志成为创建的跨度的一部分?

我的自动配置设置如下:

-Dotel.traces.exporter=jaeger
-Dotel.metrics.exporter=none
-Dotel.exporter.jaeger.endpoint=http://localhost:14250
-Dotel.resource.attributes=service.name=myService
-javaagent:C:/path/to/opentelemetry-javaagent-1.0.1-all.jar

OpenTelemetry 将日志单独发送到从自动检测中获取的遥测数据,恐怕不会交错日志数据。我们通过使用 FluentBit (https://medium.com/opentelemetry/introducing-the-fluentbit-exporter-for-opentelemetry-574ec133b4b4) 发送日志。

您可能希望使用手动检测并将跨度、跨度属性 and/or 事件添加到相关代码块,以将类似上下文的日志添加到下游使用的元数据。

当您使用 Spring 启动时,建议使用启动依赖项之一,例如 opentelemetry-otlp-exporter-starter (https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/spring/starters/otlp-exporter-starter), which should get you most of the way there. You want to use the @WithSpan annotation to decorate your methods, which will enable you to obtain the current span easily. See https://opentelemetry.lightstep.com/java/.

官方文档有一些示例,可能会有帮助,但请注意 API 和 SDK 正在快速变化,因此示例并不总是有效 - https://opentelemetry.io/docs/java/manual_instrumentation/.

有关 OpenTelemetry 和日志记录的详细信息:https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/overview.md

向 span 添加日志在一定程度上取决于您用于收集 traces/spans 和可视化它们的后端。

我使用 Jaegar,它将 OTEL 事件解释为 UI 中的日志,因此我编写了一个自定义日志附加程序,将应用程序日志放入一个事件中,该事件随后在 UI 中被拾取].

此处有更多详细信息: