Java용 X-Ray AWS SDK를 사용하여 SDK 호출 추적하기 - AWS X-Ray

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Java용 X-Ray AWS SDK를 사용하여 SDK 호출 추적하기

애플리케이션이 를 AWS 서비스 호출하여 데이터를 저장하거나, 대기열에 기록하거나, 알림을 보내는 경우, X-Ray SDK for Java는 호출을 하위 세그먼트로 다운스트림으로 추적합니다. 해당 서비스 (예: Amazon S3 버킷 또는 Amazon SQS 대기열) 내에서 액세스하는 추적 AWS 서비스 및 리소스는 X-Ray 콘솔의 추적 맵에 다운스트림 노드로 표시됩니다.

빌드에서 aws-sdkaws-sdk-instrumentor 하위 모듈을 포함하면 Java용 X-Ray SDK가 모든 AWS SDK 클라이언트를 자동으로 계측합니다. Instrumentor 하위 모듈을 포함하지 않을 경우 다른 클라이언트는 배제하고 일부 클라이언트만 선택하여 구성할 수 있습니다.

개별 클라이언트를 계측하려면 빌드에서 aws-sdk-instrumentor 하위 모듈을 제거하고 서비스의 클라이언트 빌더를 사용하여 AWS SDK 클라이언트에 XRayClient as를 추가하십시오. TracingHandler

예를 들어 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(); //...