【问题标题】:Opentelemetry: How to add logs to a spanOpentelemetry:如何将日志添加到跨度
【发布时间】:2021-08-02 16:25:43
【问题描述】:

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

我的自动配置设置如下:

-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

【问题讨论】:

    标签: java logging open-telemetry


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

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

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

      更多细节在这里:

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

      【讨论】:

        猜你喜欢
        • 2022-01-01
        • 2021-09-25
        • 2017-02-28
        • 2011-09-26
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-01-02
        • 2021-05-29
        相关资源
        最近更新 更多