기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Java용 X-Ray AWS SDK를 사용하여 SDK 호출 추적하기
애플리케이션이 를 AWS 서비스 호출하여 데이터를 저장하거나, 대기열에 기록하거나, 알림을 보내는 경우, X-Ray SDK for Java는 호출을 하위 세그먼트로 다운스트림으로 추적합니다. 해당 서비스 (예: Amazon S3 버킷 또는 Amazon SQS 대기열) 내에서 액세스하는 추적 AWS 서비스 및 리소스는 X-Ray 콘솔의 추적 맵에 다운스트림 노드로 표시됩니다.
빌드에서 aws-sdk
및 aws-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(); //...