【问题标题】:How to Add DataDog trace ID in Logs using Spring Boot + Logback如何使用 Spring Boot + Logback 在日志中添加 DataDog 跟踪 ID
【发布时间】:2020-02-18 15:49:59
【问题描述】:

好的,我花了一些时间研究如何配置数据以在日志中包含 DataDog 跟踪 ID,但无法使其正常工作。要清楚我正在寻找的是在日志消息中查看跟踪 ID,就像将 spring-cloud-starter-sleuth 添加到类路径一样,自动配置 Slf4j/Logback 以在日志消息中显示跟踪 ID。

我从哪里开始:

  1. 我们有一个简单的 Web Spring Boot 应用程序作为 Docker 容器运行,部署为 AWS Elastic BeansTalk,其日志会发送到 CloudWatch,我们会在那里读取它们。
  2. 我们将 DataDog 作为 Java 代理(因此 pom.xml 中没有依赖项)
  3. 我们的依赖项列表中有 SLF4J/Logback。
  4. 没有其他相关的依赖(如dd-trace-ot 或任何opertracing 库)

到目前为止我做了什么:

  1. 我在 SO 上发现添加 opentracing-spring-cloud-starter 会自动添加日志集成。但我无法让它工作。
  2. 在 DD 网站上,它说配置模式足以查看 ID,但在我们的例子中它不起作用。 (是因为我们的日志没有 JSON 吗?)。此外,添加 dd-trace-ot 也无济于事。

注意事项:

  1. 我们无法切换到 JSON 日志。
  2. 我们无法切换到任何其他库(例如 Slueth)。
  3. 我们不能离开 CloudWatch。

谁能告诉我我需要如何配置应用程序才能在日志消息中查看跟踪 ID?有没有我可以查看的文档或示例?

【问题讨论】:

    标签: spring-boot logback datadog opentracing distributed-tracing


    【解决方案1】:

    您是否有能力在发送的日志中添加一些参数。从 the documentation 开始,您应该能够以 Datadog 将解释它们的方式将跟踪 ID 注入到您的日志中。

    您还可以查看解析器以从原始日志中提取跟踪 ID 和跨度 ID。 This documentation 应该可以帮到你。

    【讨论】:

    【解决方案2】:

    根据文档,如果您没有 JSON 日志,则需要在格式化程序中包含 dd.trace_iddd.span_id

    如果您的日志是原始格式,请更新您的格式化程序以包含 dd.trace_iddd.span_id 在您的记录器配置中:

    <Pattern>"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -
    %X{dd.trace_id:-0} %X{ dd.span_id:-0} - %m%n"</Pattern> ```
    

    所以如果你添加%X{dd.trace_id:-0} %X{ dd.span_id:-0},它应该可以工作。

    【讨论】:

    • 注意:您还必须手动关联您的日志
    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多