Java のダイナミックインスツルメンテーションを有効にする
ダイナミックインスツルメンテーションは、Datadog のトレーシングライブラリをサポートする機能です。すでに APM を使用してアプリケーションのトレースを収集している場合は、Agent とトレーシングライブラリが必要なバージョンであることを確認し、ステップ 4 のダイナミックインスツルメンテーションの有効化に直接進みます。
要件
インストール
Install or upgrade your Agent to version 7.45.0 or higher.
まだ APM を有効にしていない場合は、Agent の構成で DD_APM_ENABLED
環境変数を true
に設定し、ポート 8126/TCP
をリッスンします。
dd-java-agent.jar
をダウンロードします。
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
Note: Dynamic Instrumentation is available in the dd-java-agent.jar
library in versions 1.34.0 and later.
-Ddd.dynamic.instrumentation.enabled
フラグ、または DD_DYNAMIC_INSTRUMENTATION_ENABLED
環境変数を true
に設定し、ダイナミックインスツルメンテーションを有効にしてサービスを稼働させます。dd.service
、dd.env
、dd.version
の統合サービスタグを指定すると、プローブをフィルターしたりグループ化したり、アクティブなクライアントをこれらの次元でターゲットにすることができるようになります。
サービス起動コマンドの例:
java \
-javaagent:dd-java-agent.jar \
-Ddd.service=<YOUR_SERVICE> \
-Ddd.env=<YOUR_ENVIRONMENT> \
-Ddd.version=<YOUR_VERSION> \
-Ddd.dynamic.instrumentation.enabled=true \
-jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
java \
-javaagent:dd-java-agent.jar \
-jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>
注: -javaagent
引数は -jar
ファイルより前にあり、アプリケーション引数ではなく JVM オプションとして追加される必要があります。詳しくは、Oracle ドキュメントを参照してください。
# 良い:
java -javaagent:dd-java-agent.jar ... -jar my-service.jar -more-flags
# 悪い:
java -jar my-service.jar -javaagent:dd-java-agent.jar ...
- ダイナミックインスツルメンテーションを有効にした状態でサービスを起動すると、APM > ダイナミックインスツルメンテーションページでダイナミックインスツルメンテーションの利用を開始することができます。
構成
以下の環境変数を使用してダイナミックインスツルメンテーションを構成します。
環境変数 | タイプ | 説明 |
---|
DD_DYNAMIC_INSTRUMENTATION_ENABLED | Boolean | 引数 -Ddd.dynamic.instrumentation.enabled の代替。ダイナミックインスツルメンテーションを有効にするには、true に設定します。 |
DD_SERVICE | 文字列 | サービス名 (例: web-backend )。 |
DD_ENV | 文字列 | 環境名 (例: production )。 |
DD_VERSION | 文字列 | サービスのバージョン。 |
DD_TAGS | 文字列 | 生成されたデータに適用するタグ。タグは <key>:<value> をカンマで区切ったリストである必要があります。例: layer:api,team:intake |
次にやるべきこと
スナップショットやメトリクスプローブの設定、データの参照やインデックス作成については、ダイナミックインスツルメンテーションを参照してください。
その他の参考資料