启用跟踪与日志关联
您可以在 Application Signals 中启用跟踪与日志关联。这会自动将跟踪 ID 和跨度 ID 注入到相关的应用程序日志中。然后,当您在 Application Signals 控制台中打开跟踪详细信息页面时,与当前跟踪相关的相关日志条目(如果有)会自动出现在页面底部。
例如,假设您注意到延迟图中出现了一个峰值。您可以选择图表上的点来加载该时间点的诊断信息。然后,您可以选择相关的跟踪以获取更多信息。查看跟踪信息时,可以向下滚动以查看与跟踪相关的日志。这些日志可能会显示与导致延迟峰值的问题相关的模式或错误代码。
为了实现跟踪日志关联,Application Signals 依赖于以下内容:
适用于 Python 的 OpenTelemetry Logging Instrumentation
。
所有这些检测工具都由 OpenTelemetry 社区提供。Application Signals 使用其将跟踪 ID 和跨度 ID 等跟踪上下文注入应用程序日志。要启用此功能,您必须手动更改日志记录配置以启用自动检测。
根据应用程序运行的架构,除了执行本节中的步骤外,您可能还必须设置一个环境变量以启用跟踪日志关联。
在 Amazon EKS 上,无需采取进一步操作。
在 Amazon ECS 上,无需任何进一步的操作。
在 Amazon EC2 上,请参阅 步骤 3:检测您的应用程序并将其启动 中过程的步骤 4。
启用跟踪日志关联后,
跟踪日志关联设置示例
本节包含在多个环境中设置跟踪日志关联的示例。
Spring Boot for Java
假设您在名为 custom-app
的文件夹中有一个 Spring Boot 应用程序。应用程序配置通常是一个名为 custom-app/src/main/resources/application.yml
的 YAML 文件,可能如下所示:
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...
要启用跟踪日志关联,请添加以下日志记录配置。
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ... logging: pattern: level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
Logback for Java
在日志记录配置(例如 logback.xml)中,将跟踪上下文 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
插入到编码器的 pattern
中。例如,以下配置在日志消息之前添加跟踪上下文。
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>app.log</file> <append>true</append> <encoder> <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> </encoder> </appender>
有关 Logback 中编码器的更多信息,请参阅 Logback 文档中的 Encoders
Log4j2 for Java
在日志记录配置(例如 log4j2.xml)中,将跟踪上下文 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
插入到 PatternLayout
中。例如,以下配置在日志消息之前添加跟踪上下文。
<Appenders> <File name="FILE" fileName="app.log"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </File> </Appenders>
有关 Log4j2 中模式布局的更多信息,请参阅 Log4j2 文档中的 Pattern Layout
Log4j for Java
在日志记录配置(例如 log4j.xml)中,将跟踪上下文 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
插入到 PatternLayout
中。例如,以下配置在日志消息之前添加跟踪上下文。
<appender name="FILE" class="org.apache.log4j.FileAppender">; <param name="File" value="app.log"/>; <param name="Append" value="true"/>; <layout class="org.apache.log4j.PatternLayout">; <param name="ConversionPattern" value="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>; </layout>; </appender>;
有关 Log4j 中模式布局的更多信息,请参阅 Log4j 文档中的 Class Pattern Layout
Python
运行应用程序时,将环境变量 OTEL_PYTHON_LOG_CORRELATION
设置为 true
。有关更多信息,请参阅 Python OpenTelemetry 文档中的 Enable trace context injection
Node.js
有关在 Node.js 中为支持跟踪上下文注入的日志库启用跟踪上下文注入的更多信息,请参阅适用于 Node.js 的 Pino