啟用追蹤與日誌的關聯
可以在 Application Signals 中啟用追蹤與日誌的關聯。這會自動將追蹤 ID 和範圍 ID 注入相關的應用程式日誌。然後,當您在 Application Signals 主控台中開啟追蹤詳細資訊頁面時,與當前追蹤關聯的相關日誌條目 (如有) 會自動顯示於頁面底部。
例如,假設您注意到延遲圖表出現突發性飆升。可以選擇圖表上的點,以載入該時間點的診斷資訊。然後,可以選擇相關的追蹤以取得更多資訊。當您檢視追蹤資訊時,可以向下捲動以查看與追蹤相關聯的日誌。這些日誌可能揭示與導致延遲飆升問題相關的模式或錯誤代碼。
為實現追蹤日誌關聯,Application Signals 依賴以下要素:
適用於 Java 的 Logger MDC 自動檢測
。 適用於 Python 的 OpenTelemetry 記錄檢測
。
所有這些檢測都由 OpenTelemetry 社群提供。Application Signals 會使用它們將追蹤內容 (例如追蹤 ID 與範圍 ID) 注入應用程式日誌。若要啟用此功能,必須手動變更記錄組態以啟用自動檢測。
視執行應用程式的架構而定,除遵循本節中的步驟之外,可能還必須設定環境變數來啟用追蹤日誌關聯。
在 Amazon EKS 上,無需執行任何後續步驟。
在 Amazon ECS 上,無需執行任何後續步驟。
在 Amazon EC2 上,請參閱 步驟 3:檢測您的應用程式並啟動它 程序中的步驟 4。
在您啟用追蹤日誌關聯之後,
追蹤日誌關聯設定範例
本節包含在多個環境中設定追蹤日誌關聯的範例。
適用於 Java 的 Spring Boot
假設您在名為 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
適用於 Java 的 Logback
在記錄組態 (例如 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 文件中的編碼器
適用於 Java 的 Log4j2
在記錄組態 (例如 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 文件中的模式配置
適用於 Java 的 Log4j
在記錄組態 (例如 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 文件中的類別模式配置
Python
在執行應用程式時,將環境變數 OTEL_PYTHON_LOG_CORRELATION 設定為 true。如需詳細資訊,請參閱 Python OpenTelemetry 文件中的啟用追蹤內容注入
Node.js
如需有關在 Node.js 中為支援的日誌記錄庫啟用追蹤內容注入的詳細資訊,請參閱 Pino