OpenTelemetryと連携するためのAPM Javaエージェントの構成
APM Javaエージェントは、OpenTelemetryと連携するように構成できます。
APM Java Agentのインストゥルメンテーションおよびモニタリングを引き続き使用し、既存のOpenTelemetryモニタリングに接続できます。
既存のOpenTelemetryエージェントをAPMとともに使用できるようにする場合は、OpenTelemetryおよびその他のトレーサの構成を参照してください。
OpenTelemetry Javaエージェントの自動インストゥルメンテーション(opentelemetry-javaagent.jar)はサポートされていません。この機能は、OpenTelemetry APIを使用して手動インストゥルメンテーションを実行し、独自のスパン/トレース(opentelemetry-api)を作成するアプリケーション/ライブラリと連携することを目的としています。
APM Javaエージェントが構成されると、APM Javaエージェント・ハイブリッド・モードと同様に機能します。ただし、OpenTracing APIとともにOpenTelemetry APIでも機能します。
この項のトピックは次のとおりです:
W3C手荷物の伝播は、APM Javaエージェント1.17リリース以降でサポートされています。
トレーサのみのシナリオは使用できません。ただし、APM JavaエージェントがOpenTelemetryを使用するように構成されている場合、そのデフォルト値はW3C
に調整されます。これは、OpenTelemetryがデフォルトで使用する形式です。
APMエージェントでのOpenTelemetryの有効化
APM Javaエージェントは、OpenTelemetryトレースおよびメトリックをサポートしています。次のプロパティを使用して、手動インストゥルメンテーションおよびカスタム・メトリックに対してOpenTelemetryを有効にします。
プロパティ・タイプおよび説明 | プロパティ | デフォルト | 例 |
---|---|---|---|
AgentConfig.properties
|
com.oracle.apm.agent.otel |
false | com.oracle.apm.agent.hybrid=false |
システム・プロパティ システム・プロパティを更新します。 |
com.oracle.apm.agent.otel |
false | com.oracle.apm.agent.otel=false |
環境変数 環境変数を更新します。 |
com_oracle_apm_agent_otel |
false |
Windowsの場合: Linuxの場合: |
OpenTelemetryにはJava 8以上が必要です。プロパティ
com.oracle.apm.agent.otel=false
は、Java 7以下で適用されます。
APM Javaエージェントの起動時に、OpenTelemetryインスタンスが起動されます。OpenTelemetryインスタンスには、GlobalOpenTelemetry.get()
を使用してアクセスできます。
他のOpenTelemetryバージョンの使用
APM Javaエージェント1.14には、OpenTelemetry 1.38.0ライブラリが組み込まれています。APM JavaエージェントはOpenTelemetryの手動インストゥルメンテーションをサポートしているため、プロジェクトが依存するAPIバージョンは異なる場合があります。
- エージェント・ホーム・ディレクトリに
opentelemetry
ディレクトリを作成します。例:oracle-apm-agent/opentelemetry
。 - 新しいディレクトリで使用するOpenTelemetryライブラリをコピーします。
ライブラリには、次のアーティファクトIDが必要です。また、opentelemetryで始まらないものは、opentelemetryのライブラリによって異なります。
-
opentelemetry-api
-
opentelemetry-apiインキュベータ
-
opentelemetryコンテキスト
-
opentelemetry-exporter-common
-
opentelemetry-exporter-otlp
-
opentelemetry-exporter-otlp-common
-
opentelemetry-exporter-sender-okhttp
-
opentelemetry-extension-trace-propagators
-
opentelemetry-sdk
-
opentelemetry-sdk-common
-
opentelemetry-sdk-extension-autoconfigure
-
opentelemetry-sdk-extension-autoconfigure-spi
-
opentelemetry-sdkログ
-
opentelemetry-sdkメトリック
-
opentelemetry-sdk-trace
- 注釈
- kotlin-stdlib
- kotlin-stdlib-common
- kotlin-stdlib-jdk7
- kotlin-stdlib-jdk8
-
okhttp
-
okio-3.6.0.jarokio-jvm
ノート
OpenTelemetryバージョンが異なるライブラリには、ライブラリ名が異なる場合があります。 -
oracle-apm-agent/bootstrap/ApmAgent.jar
を更新するには、-overwrite
オプションを指定してAPMapm-java-agent-installer provision-agent-upgrade
コマンドを使用します。このステップは、カスタムのopentelemetryライブラリを使用するように
ApmAgent.jar
を更新するために必要です。例:java -jar apm-java-agent-installer-<version>.jar provision-agent-upgrade -destination=<oracle-apm-agent_parent_path> -overwrite
伝播設定
APM Javaエージェントの伝播タイプ処理の詳細は、「OpenTelemetryおよびその他のトレーサの構成」を参照してください。
デフォルトでは、伝播を処理するためにB3
(マルチヘッダー)形式が使用されます。ただし、APM JavaエージェントがOpenTelemetryと連携するように構成されている場合、このデフォルト値は、OpenTelemetryがデフォルトで使用する形式であるW3C
に調整されます。
AgentConfig.properties
ファイルでパラメータcom.oracle.apm.agent.tracer.propagation.type
を指定すると、デフォルトの動作がオーバーライドされ、任意の伝播タイプを使用できます。また、すべてを接続して連携させるには、次のものも調整する必要があります。
- OpenTelemetry更新: OpenTelemetryには、使用するプロパゲータを変更するための独自のプロパティがあります。
システム・プロパティ
otel.propagators
または環境変数OTEL_PROPAGATORS
を使用して、プロパゲータを更新できます。値の詳細は、https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_propagatorsを参照してくださいノート
APM Javaエージェントがデフォルトで使用するのと同じ
B3
ヘッダー形式を使用するようにOpenTelemetryを変更する場合は、b3multi
プロパゲータを使用するようにOpenTelemetryを更新します。伝播にB3SINGLE
を使用している場合は、OpenTelemetryを更新してB3
プロパゲータを使用します。 - ブラウザ・エージェントの更新: ブラウザ・エージェントのインジェクションを使用している場合は、別の伝播タイプを使用するようにjavascriptを更新する必要があります。デフォルトでは、
B3
(マルチヘッダー)が使用されます。詳細は、Ajaxコール・インストゥルメンテーションの構成を参照してください。