ログ相関のトレースを有効にする - Amazon CloudWatch

ログ相関のトレースを有効にする

Application Signals でログ相関のトレースを有効にできます。これにより、トレース ID とスパン ID が関連するアプリケーションログに自動的に挿入されます。次に、Application Signals コンソールでトレースの詳細ページを開くと、現在のトレースに関連するログエントリがあれば、ページの下部に自動的に表示されます。

例えば、レイテンシーグラフにスパイクがあることに気付いたとします。グラフ上のそのポイントを選択すると、その時点の診断情報をロードできます。次に、関連するトレースを選択すると、詳細情報が表示されます。トレース情報を表示すると、下にスクロールしてそのトレースに関連付けられているログを参照できます。こうしたログを調べると、レイテンシーのスパイクを引き起こしている問題を突き止め、関連するパターンやエラーコードを明らかにできる可能性があります。

トレースログの相関を実現するために、Application Signals は以下を利用します。

いずれの計測も、OpenTelemetry コミュニティから提供されています。Application Signals は、これらを使用して、トレース ID やスパン ID などのトレースコンテキストをアプリケーションログに挿入します。これを有効にするには、自動計測を有効にするようにログ記録設定を手動で変更する必要があります。

アプリケーションが動作するアーキテクチャによっては、このセクションのステップに従うだけでなく、トレースログの相関を有効にする環境変数も設定する必要があります。

トレースログの相関を有効にした後

トレースログの相関の設定例

このセクションでは、いくつかの環境でトレースログの相関を設定する例を示します。

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} %5pPatternLayout に挿入します。例えば、以下の設定はトレースコンテキストの先頭にログメッセージを付加します。

<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} %5pPatternLayout に挿入します。例えば、以下の設定はトレースコンテキストの先頭にログメッセージを付加します。

<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_CORRELATIONtrue に設定します。詳細については、Python OpenTelemetry ドキュメントの「Enable trace context injection」を参照してください。

Node.js

Node.js 対応のロギングライブラリを使用できるように Node.js でトレースコンテキストの挿入を有効にする方法の詳細については、Node.js での PinoWinstonBunyan のいずれかの自動計測に NPM を使用する方法を解説したドキュメントを参照してください。