Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud 用 Java アプリケーションのインストルメンテーション » Splunk Observability Cloud のログと Java トレースデータを接続する

Splunk Observability Cloud のログと Java トレースデータを接続する 🔗

Splunk Distribution of OpenTelemetry Javaエージェントは、アプリケーションログを自動的にキャプチャし、OTLPエクスポーターを使用してOpen Telemetry Collectorに送信し、ログイベントにトレースID、スパンID、トレースフラグでアノテーションを付けます。

必要に応じて、サービスのバージョンやデプロイ環境など、Splunk OTel Javaエージェントによって自動的に提供される追加の属性を含むログを生成するようにJavaロギングライブラリを設定できます。

注釈

ログのエクスポートには、Splunk Distribution of OpenTelemetry Collectorが必要です。

互換性と必要条件をチェック 🔗

Splunk OTel Java エージェントは以下のロギングライブラリをサポートしています:

  • Log4j 2 2.7 以上

  • Log4j 1 1.2 以上

  • Logback 1.0 以上

  • JBoss LogManager 1.1.0以上

java.util.logging ライブラリは、Splunk Distribution of OpenTelemetry Javaと互換性のあるすべてのJDKバージョンで完全にサポートされています。Javaエージェントの互換性と要件 を参照してください。

ログ文のトレースメタデータ 🔗

Splunk OTel Javaエージェントは、デフォルトでログライブラリ用に次のMapped Diagnostic Context(MDC)フィールドを自動的に追加します。

  • トレース情報: trace_idspan_id

  • トレースフラグ

デフォルトの動作は、MDCフィールドをCollectorに送信しますが、アプリケーションログファイルには書き込みません。この情報をログファイルに含めるには、MDCフィールドを含めるようにロギングフレームワークの出力形式を設定する必要があります。ロギングフレームワークを設定するには、ロギングライブラリを設定する を参照してください。

Collectorは、OTLPエクスポーターを使用してアノテーションを付けたログを送信します。

ログのエクスポートを無効にする 🔗

ログのエクスポートをオフにするには、OTEL_LOGS_EXPORTER 環境変数または otel.logs.exporter システムプロパティを none に設定します。

リソース属性を注入する 🔗

Java エージェントは自動的にログを生成し、Collectorを通じてSplunkに送信しますが、互換性のあるログライブラリを使用して注釈付きログを生成し、ログを手動で収集したり、Universal Forwarderを経由したりすることもできます。Splunk Log Observer Connectの概要 を参照してください。

例えば、service.namedeployment.environment などのリソース属性をログ文に注入できます。このためには、注入したい属性を定義し、ロガーを手動で設定する必要があります。

リソース属性を定義する 🔗

属性を注入する前に、実行時に mdc.resource-attributes プロパティを設定してMDCから属性を利用できるようにする必要があります。例:

-Dotel.instrumentation.common.mdc.resource-attributes=service.name,deployment.environment

ロギングライブラリを設定する 🔗

Splunk Distribution of OpenTelemetry Javaは、ロガーライブラリを設定するために使用できるコンテキストプロパティをプレフィックスとするシステムプロパティとして、リソース属性を公開しています。

以下の例は、ロギングライブラリが生成するログ文に追加のメタデータを含める方法を示しています:

Log4jのコンフィギュレーションを編集します。例えば、src/main/resources/log4j2.xml 。使用環境によっては、別のファイルを編集するか、別の構成システムを使わなければならない可能性があります。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
   <Appenders>
      <Console name="STDOUT" target="SYSTEM_OUT">
         <JsonLayout compact="true" eventEol="true">
            <KeyValuePair key="trace_id" value="${ctx:trace_id}"/>
            <KeyValuePair key="span_id" value="${ctx:span_id}"/>
            <KeyValuePair key="service.name" value="${ctx:service.name}"/>
            <KeyValuePair key="environment" value="${ctx:deployment.environment}"/>
            <KeyValuePair key="trace_sampled" value="${ctx:trace_flags}"/>
         </JsonLayout>
      </Console>
   </Appenders>
   <!-- More configuration -->
</Configuration>

Spring Bootアプリケーションでは、application.properties ファイルを編集して、以下のロギングパターンを追加することもできます:

logging.pattern.console = %d{yyyy-MM-dd HH:mm:ss} - %logger{36} - %msg trace_id=%X{trace_id} span_id=%X{span_id} service=%X{service.name}, env=%X{deployment.environment} trace_flags=%X{trace_flags} %n

サーバーレスサービスまたはアプリケーションをインストルメント化する場合は、代わりに環境変数を使用します。デプロイ環境では、たとえば OTEL_ENV_NAME など、任意の環境変数を設定する必要があります。

<PatternLayout>
   <pattern>
      service.name=${OTEL_SERVICE_NAME}, deployment.environment=${OTEL_ENV_NAME} %m%n
   </pattern>
</PatternLayout>

このページは 2024年08月19日 に最終更新されました。