互換性要件

最新の Java トレーサーは、バージョン 8 以降のすべての JVM をサポートしています。バージョン 8 より前の JVM の詳細については、対応する JVM ランタイム をご覧ください。

Datadog の Java バージョンとフレームワークのサポート一覧 (レガシーバージョンとメンテナンスバージョンを含む) については、互換性要件 ページをご覧ください。

はじめに

作業を始める前に、Agent のインストールと構成 が済んでいることを確認してください。

アプリケーションをインスツルメントする

Datadog Agent をインストールして構成した後、次の手順として、アプリケーションに SDK を直接追加し、そのアプリケーションをインスツルメントします。互換性情報 の詳細を確認してください。

アプリケーションのトレースを開始するには

  1. 最新のトレーサークラスファイルが含まれる dd-java-agent.jar を、Datadog ユーザーがアクセスできるフォルダにダウンロードします。
wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
curl -Lo dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
ADD 'https://dtdg.co/latest-java-tracer' dd-java-agent.jar

注: 特定のメジャーバージョンの最新ビルドをダウンロードするには、代わりに https://dtdg.co/java-tracer-vX リンクを使用してください。X は、目的のメジャーバージョンです。 たとえば、バージョン 1 の最新ビルドの場合は、https://dtdg.co/java-tracer-v1 を使用します。マイナーバージョン番号は含めないでください。または、特定のバージョンについては、Datadog の Maven リポジトリ を参照してください。

: リリース候補バージョンは、GitHub の DataDog/dd-trace-java リリース で入手可能です。これらのバージョンにはバージョン番号に「RC」が含まれ、実稼働環境以外でのテストに推奨されます。GitHub のリリース通知を購読 すると、新しいリリース候補がテスト可能になったときに通知されます。リリース候補で問題が発生した場合は、Datadog サポート までご連絡ください。

  1. IDE、Maven または Gradle のアプリケーションスクリプト、または java -jar コマンドから、Continuous Profiler、デプロイ追跡、ログインジェクション (Datadog にログを送信している場合) を有効にしてアプリを実行するには、-javaagent JVM 引数と、該当する構成オプションを追加します。

    java -javaagent:/path/to/dd-java-agent.jar -Ddd.profiling.enabled=true -Ddd.logs.injection=true -Ddd.service=my-app -Ddd.env=staging -Ddd.version=1.0 -jar path/to/your/app.jar
    

    Note: If you have a strong need to reduce the size of your image and omit modules, you can use the jdeps command to identify dependencies. However, required modules can change over time, so do this at your own risk.

    Note: When running the SDK with Java 24+, you may see warnings related to JNI native access. Suppress these warnings by adding the --enable-native-access=ALL-UNNAMED flag. See JEP 472 for more details.

    プロファイリングを有効にすると、APM バンドルによっては請求額に影響が出る場合があります。詳細については、料金ページを参照してください。
環境変数システムプロパティ説明
DD_ENVdd.envご使用のアプリケーション環境 (productionstaging など)
DD_LOGS_INJECTIONdd.logs.injectionDatadog トレースとスパン ID の自動 MDC キー挿入を有効にします。詳細は、高度な使用方法 を参照してください。

バージョン 1.18.3 以降、このサービスが実行される場所で Agent Remote Configuration が有効になっている場合は、Software Catalog UI で DD_LOGS_INJECTION を設定できます。
DD_PROFILING_ENABLEDdd.profiling.enabledContinuous Profiler の有効化
DD_SERVICEdd.service同じジョブを実行する一連のプロセスの名前。アプリケーションの統計情報をグループ化するために使用されます。
DD_TRACE_SAMPLE_RATEdd.trace.sample.rate全サービスのトレースルートでサンプリングレートを設定します。

バージョン 1.18.3 以降、このサービスが実行される場所で Agent Remote Configuration が有効になっている場合は、Software Catalog UI で DD_TRACE_SAMPLE_RATE を設定できます。
DD_TRACE_SAMPLING_RULESdd.trace.sampling.rules指定したルールに合致するサービスのトレースのルートでサンプリングレートを設定します。
DD_VERSIONdd.versionアプリケーションのバージョン (例: 2.5202003181415、または 1.3-alpha)

その他の構成オプションは、以下で説明します。

JVM への Java SDK の追加

アプリケーションサーバーのドキュメントを参照して、-javaagent とほかの JVM 引数を渡すための適切な方法を確認してください。一般的に使用されるフレームワークの手順は次のとおりです。

アプリの名前が my_app.jar の場合、以下を含む my_app.conf を作成します。

JAVA_OPTS=-javaagent:/path/to/dd-java-agent.jar

詳細については、Spring Boot のドキュメント を参照してください。

Linux

Linux で Tomcat を実行する際にトレースを有効にするには、次のようにします。

  1. Tomcat の起動スクリプトファイル (例: setenv.sh) を開きます。
  2. setenv.sh に次の内容を追加します。
    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/dd-java-agent.jar"
    

Windows (Windows サービスとしての Tomcat)

Windows サービスとして Tomcat を実行する際にトレースを有効にするには、次のようにします。

  1. Tomcat プロジェクトフォルダの ./bin ディレクトリにあるメンテナンスユーティリティ “tomcat@VERSION_[email protected]” を開きます。
  2. [Java] タブに移動し、Java Options に次の内容を追加します。
-javaagent:C:\path\to\dd-java-agent.jar
  1. Tomcat サービスを再起動して、変更を有効にします。
  • スタンドアロンモードの場合:

    standalone.conf の末尾に次の行を追加します。

JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/dd-java-agent.jar"
  • Windows でスタンドアロンモードを使用している場合は、standalone.conf.bat の末尾に次の行を追加します。
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:X:/path/to/dd-java-agent.jar"
  • ドメインモードの場合:

    domain.xml ファイルの server-groups.server-group.jvm.jvm-options タグの下に、次の行を追加します。

<option value="-javaagent:/path/to/dd-java-agent.jar"/>

詳細については、JBoss のドキュメント を参照してください。

jetty.sh を使用して Jetty をサービスとして起動する場合は、次の内容を追加します。

JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/dd-java-agent.jar"

start.ini を使用して Jetty を起動する場合は、次の行を追加します (--exec の下に追加します。--exec 行がない場合は、追加してください)。

-javaagent:/path/to/dd-java-agent.jar

管理コンソールで、次のようにします。

  1. [Servers] (サーバー) を選択します。[Server Type] (サーバータイプ) で、[WebSphere application servers] (WebSphere アプリケーションサーバー) を選択し、対象のサーバーを選択します。
  2. [Java and Process Management] (Java およびプロセス管理) > [Process Definition] (プロセス定義) を選択します。
  3. [Additional Properties] (追加プロパティ) セクションで、[Java Virtual Machine] (Java 仮想マシン) をクリックします。
  4. [Generic JVM arguments] (汎用 JVM 引数) テキストフィールドに、次のように入力します。
-javaagent:/path/to/dd-java-agent.jar

詳細とオプションについては、WebSphere のドキュメント を参照してください。

  • java -jar コマンドに -javaagent 引数を追加する場合は、-jar 引数の_前_に JVM オプションとして追加してください。アプリケーションの引数として追加しないでください。たとえば、次のようにします。

    java -javaagent:/path/to/dd-java-agent.jar -jar my_app.jar
    

    For more information, see the Oracle documentation.

  • クラスパスに dd-java-agent を追加しないでください。予期しない動作が発生する可能性があります。

自動インスツルメンテーション

Java の自動インスツルメンテーションでは、JVM が提供する java-agent のインスツルメンテーション機能を使用します。java-agent が登録されている場合、ロード時にクラスファイルを修正できます。

注: リモート ClassLoader でロードされたクラスは、自動的にインスツルメンテーションされません。

インスツルメンテーションは、自動インスツルメンテーション、OpenTracing API、またはその両方の組み合わせによって提供される場合があります。インスツルメンテーションでは、通常、以下の情報が収集されます。

  • 経過時間。OpenTracing API からタイムスタンプが提供されない場合、JVM の NanoTime クロックが使用されます
  • キー/値タグペア
  • アプリケーションによって処理されていないエラーとスタックトレース
  • システムを通過するトレース (リクエスト) の合計数

構成

必要に応じて、Unified Service Tagging の設定など、アプリケーションパフォーマンスのテレメトリデータを送信するための SDK を構成します。詳細については、ライブラリの構成 を参照してください。

Remote Configuration

Remote Configuration を使用すると、Datadog Agent はアプリケーションを再起動せずにトレース設定を動的に構成できます。デフォルトでは、Remote Configuration は有効になっています。無効にするには、以下のように環境変数を設定します。

DD_REMOTE_CONFIG_ENABLED=false

または、以下の JVM システムプロパティを追加します。

-Ddd.remote_config.enabled=false

参考資料