翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
X-Ray SDK for Java による AWS SDK 呼び出しのトレース
アプリケーションで AWS のサービス への呼び出しを行い、データの保存、キューへの書き込み、または通知の送信を行う場合、X-Ray SDK for Java によってサブセグメントの呼び出しダウンストリームが追跡されます。これらのサービス (例えば、Amazon S3 バケットまたは Amazon SQS キュー) 内でアクセスするトレースされた AWS のサービス およびリソースは、X-Ray コンソールのトレースマップではダウンストリームノードとして表示されます。
aws-sdk
および aws-sdk-instrumentor
サブモジュールをビルドに含めると、X-Ray SDK for Java では自動的にすべての AWS SDK クライアントを計測します。Instrumentor サブモジュールを含めない場合は、一部のクライアントを計測して他を除外できます。
個別のクライアントを計測するには、aws-sdk-instrumentor
サブモジュールをビルドから削除し、サービスのクライアントビルダーを使用して XRayClient
を TracingHandler
として AWS SDK クライアントに追加します。
たとえば、AmazonDynamoDB
を計測するには、トレースハンドラーを AmazonDynamoDBClientBuilder
に渡します。
例 MyModel.java - DynamoDB クライアント
import com.amazonaws.xray.AWSXRay;
import com.amazonaws.xray.handlers.TracingHandler;
...
public class MyModel {
private AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.fromName(System.getenv("AWS_REGION")))
.withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder()))
.build();
...
すべてのサービスで、X-Ray コンソールで呼び出された API の名前を確認できます。サービスのサブセットの場合、X-Ray SDK はセグメントに情報を追加して、サービスマップでより細かく指定します。
たとえば、実装された DynamoDB クライアントでコールすると、SDK はテーブルをターゲットとするコールのセグメントにテーブル名を追加します。コンソールで、各テーブルはサービスマップ内に個別のノードとして表示され、テーブルをターゲットにしないコール用の汎用の DynamoDB ノードが表示されます。
例 項目を保存するための DynamoDB に対するコールのサブセグメント
{
"id": "24756640c0d0978a",
"start_time": 1.480305974194E9,
"end_time": 1.4803059742E9,
"name": "DynamoDB",
"namespace": "aws",
"http": {
"response": {
"content_length": 60,
"status": 200
}
},
"aws": {
"table_name": "scorekeep-user",
"operation": "UpdateItem",
"request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
}
}
名前付きリソースにアクセスしたとき、次のサービスをコールすると、サービスマップに追加のノードが作成されます。特定のリソースをターゲットとしないコールでは、サービスの汎用ノードが作成されます。
-
Amazon DynamoDB – テーブル名
-
Amazon Simple Storage Service – バケットとキー名
-
Amazon Simple Queue Service – キュー名
AWS SDK for Java 2.2 以降でダウンストリーム呼び出しを AWS のサービス に実装するには、ビルド設定から aws-xray-recorder-sdk-aws-sdk-v2-instrumentor
モジュールを除外します。その代わりに、aws-xray-recorder-sdk-aws-sdk-v2 module
を含め、TracingInterceptor
で設定して個々のクライアントを実装します。
例 AWS SDK for Java 2.2 以降 - トレースインターセプター
import com.amazonaws.xray.interceptors.TracingInterceptor; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration import software.amazon.awssdk.services.dynamodb.DynamoDbClient; //... public class MyModel { private DynamoDbClient client = DynamoDbClient.builder() .region(Region.US_WEST_2) .overrideConfiguration(ClientOverrideConfiguration.builder() .addExecutionInterceptor(new TracingInterceptor()) .build() ) .build(); //...