すべてのプロダクト
Search
ドキュメントセンター

:Java アプリケーションのログにトレース ID を関連付ける

最終更新日:Dec 30, 2024

Application Real-Time Monitoring Service (ARMS) を使用すると、トレース ID を Java アプリケーションのログに関連付けることができます。このようにして、アプリケーションでエラーが発生した場合、トレース ID に関連付けられたログにアクセスして、エラーを特定し、トラブルシューティングを行うことができます。

前提条件

説明

Application Monitoring ベーシック版では、この機能はサポートされていません。

背景情報

ARMS では、Mapped Diagnostic Context (MDC) メカニズムに基づいて、トレース ID をアプリケーションのログに関連付けることができます。Log4j、Log4j 2、Logback などの主要なログフレームワークがサポートされています。

手順

  1. ARMS コンソール にログインします。左側のナビゲーションペインで、アプリケーション監視 > アプリケーションリスト を選択します。

  2. アプリケーションリスト ページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。

    説明

    言語 列に表示されるアイコンは、アプリケーションが記述されている言語を示します。

    Java图标: Java アプリケーション

    image: Go アプリケーション

    image: Python アプリケーション

    ハイフン (-): Managed Service for OpenTelemetry で監視されているアプリケーション。

  3. 上部のナビゲーションバーで、構成 > カスタム構成 を選択します。

  4. アプリケーションログの関連付け構成 セクションの カスタム構成 タブで、ログソースログサービス SLS に設定します。 ビジネスログをtraceidに自動的に関連付ける をオンにし、Simple Log Service がデプロイされているリージョンを選択し、プロジェクトとログストアを選択します。

    必要に応じて、ログに traceId を自動的に入力する および ログに spanId を自動的に入力する をオンにすることもできます。

    image

    説明
  5. (オプション) ログのレイアウトのパターン properties に %X{EagleEye-TraceID} を追加します。

    %X{span_id} を追加することで、スパン ID を関連付けることもできます。

    重要
    • スパン ID の関連付けは、ARMS エージェント V4.x 以降でのみサポートされています。

    • コードで {EagleEye-TraceID} を取得する方法については、ARMS SDK を参照してください。

    次の例は、Log4j、Log4j2、および Logback フレームワークの構成ファイルを変更する方法を示しています。

    • Log4j 構成ファイル log4j.properties を変更します。

      log4j.appender.warn.layout=org.apache.log4j.PatternLayout
      log4j.appender.warn.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p]-(%C:%L) - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %m%n
    • Log4j2 構成ファイル log4j2.xml を変更します。

      PatternLayout

      <console name="Console" target="SYSTEM_OUT">
          <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
          <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %m%n"/>
      </console>

      JsonLayout

      <JsonLayout   complete="false" compact="true" eventEol="true"
                    properties="false" locationInfo="true"
                    includeStacktrace="true" stacktraceAsString="true"
                    objectMessageAsJsonObject="true" >
          <KeyValuePair key="EagleEye-TraceID" value="${ctx:EagleEye-TraceID}" />
          <KeyValuePair key="span_id" value="${ctx:span_id}" />
      </JsonLayout>
    • Logback 構成ファイル logback.xml を変更します。

      PatternLayout

      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
          <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %msg%n</pattern>
      </encoder>

      JsonLayout

      <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
      	<providers>
      		<timestamp/>
      		<threadName/>
      		<logLevel/>
      		<loggerName/>
      		<message/>
      		<callerData/>
      		<stackTrace/>
      		<pattern>
      			<pattern>
      				{
      				"EagleEye-TraceID": "%X{EagleEye-TraceID}",
                                      "span_id": "%X{span_id}"
      				}
      			</pattern>
      		</pattern>
      	</providers>
      </encoder>
  6. アプリケーションを再起動します。

    アプリケーションログにトレース ID が表示されている場合、次の図に示すように、ログはトレース ID に関連付けられています。dg_am_log_traceid

  7. (オプション) ログ収集を設定し、アプリケーションログをプロジェクトとログストアにアップロードします。

    デフォルトでは、ARMS はアプリケーションログを収集しません。