使用適用於 Java 的 X-Ray AWS 開發套件追蹤 SDK 呼叫 - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用適用於 Java 的 X-Ray AWS 開發套件追蹤 SDK 呼叫

注意

End-of-support通知 – 在 2027 年 2 月 25 日, AWS X-Ray 將停止支援 AWS X-Ray SDKs 和協助程式。2027 年 2 月 25 日之後,您將不再收到更新或版本。如需支援時間表的詳細資訊,請參閱 X-Ray SDK 和協助程式終止支援時間表。建議您遷移至 OpenTelemetry。如需遷移至 OpenTelemetry 的詳細資訊,請參閱從 X-Ray 檢測遷移至 OpenTelemetry 檢測

當您的應用程式呼叫 AWS 服務 來存放資料、寫入佇列或傳送通知時,適用於 Java 的 X-Ray 開發套件會在子區段中追蹤下游的呼叫。您在這些服務中存取的追蹤 AWS 服務 和資源 (例如 Amazon S3 儲存貯體或 Amazon SQS 佇列),會在 X-Ray 主控台的追蹤地圖上顯示為下游節點。

當您在建置中包含 aws-sdkaws-sdk-instrumentor子模組時,適用於 Java 的 X-Ray 開發套件會自動檢測所有 AWS 開發套件用戶端。如果您未包含 Instrumentor 子模組,您可以選擇檢測某些特定用戶端,而排除其他用戶端。

若要檢測個別用戶端,請從您的建置中移除 aws-sdk-instrumentor 子模組,並使用 服務的用戶端建置器,在 AWS SDK 用戶端TracingHandler上新增 XRayClient做為 。

例如,若要檢測 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 用戶端進行呼叫時,軟體開發套件會將資料表名稱新增至以資料表為目標的呼叫區段。在 主控台中,每個資料表會在服務映射中顯示為個別節點,並針對非資料表目標的呼叫使用一般 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 服務 使用 適用於 Java 的 AWS SDK 2.2 和更新版本檢測對 的下游呼叫,您可以從建置組態中省略 aws-xray-recorder-sdk-aws-sdk-v2-instrumentor模組。這時改成包含 aws-xray-recorder-sdk-aws-sdk-v2 module,然後使用 TracingInterceptor 為其進行設定,檢測個別的用戶端。

範例 適用於 Java 的 AWS SDK 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(); //...