1

我在我的 Spring Boot 应用程序中使用 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
4

2 回答 2

0

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

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

更多细节在这里:

https://stackoverflow.com/a/68739794/2715083

于 2021-09-21T05:44:40.433 回答
0

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

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

当您使用 Spring Boot 时,建议使用其中一种启动器依赖项,例如 opentelemetry-otlp-exporter-starter ( https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main /instrumentation/spring/starters/otlp-exporter-starter),这应该可以让您大部分时间到达那里。您想使用 @WithSpan 注释来装饰您的方法,这将使您能够轻松获取当前跨度。请参阅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

于 2021-08-23T11:27:32.937 回答