As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Rastreando chamadas AWS do SDK com o X-Ray SDK for Java
Quando seu aplicativo faz chamadas Serviços da AWS para armazenar dados, gravar em uma fila ou enviar notificações, o X-Ray SDK for Java rastreia as chamadas downstream em subsegmentos. Os recursos rastreados Serviços da AWS e que você acessa nesses serviços (por exemplo, um bucket do Amazon S3 ou uma fila do Amazon SQS) aparecem como nós downstream no mapa de rastreamento no console X-Ray.
O X-Ray SDK para Java instrumenta automaticamente todos os clientes de SDK da AWS quando você inclui o aws-sdk
e submódulos aws-sdk-instrumentor
na compilação. Se você não incluir o submódulo Instrumentor, poderá optar por instrumentar alguns clientes e, ao mesmo tempo, excluir outros.
Para instrumentar clientes individuais, remova o aws-sdk-instrumentor
submódulo da sua compilação e adicione um XRayClient
como TracingHandler
em seu cliente AWS SDK usando o construtor de clientes do serviço.
Por exemplo, para instrumentar um cliente AmazonDynamoDB
, transmita um manipulador de rastreamento para AmazonDynamoDBClientBuilder
.
exemplo MyModel.java - cliente 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();
...
Para todos os serviços, o nome da API chamada no console do X-Ray pode ser visto. Para um subconjunto de serviços, o X-Ray SDK adiciona informações ao segmento para fornecer maior detalhamento no mapa de serviços.
Por exemplo, quando você faz uma chamada com um cliente instrumentado do DynamoDB, o SDK adiciona o nome da tabela ao segmento para chamadas direcionadas a uma tabela. No console, cada tabela aparece como um nó separado no mapa de serviços, com um nó genérico do DynamoDB para chamadas não direcionadas a uma tabela.
exemplo Subsegmento para uma chamada ao DynamoDB para salvar um item
{
"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",
}
}
Ao acessar recursos nomeados, as chamadas para os serviços os seguir criam nós adicionais no mapa de serviço. As chamadas que não apontam para recursos específicos criam um nó genérico para o serviço.
-
Amazon DynamoDB: nome da tabela
-
Amazon Simple Storage Service: nome de chave e bucket
-
Amazon Simple Queue Service: nome da fila
Para instrumentar chamadas downstream para Serviços da AWS com AWS SDK for Java 2.2 e versões posteriores, você pode omitir o aws-xray-recorder-sdk-aws-sdk-v2-instrumentor
módulo da sua configuração de compilação. Inclua o aws-xray-recorder-sdk-aws-sdk-v2 module
em seu lugar e instrumente clientes individuais, configurando-os com um TracingInterceptor
.
exemplo AWS SDK for Java 2.2 e posterior - interceptor de rastreamento
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(); //...