Rastreo de llamadas al AWS SDK con el X-Ray SDK for Java - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Rastreo de llamadas al AWS SDK con el X-Ray SDK for Java

Cuando la aplicación realiza llamadas Servicios de AWS para almacenar datos, escribir en una cola o enviar notificaciones, el X-Ray SDK for Java rastrea las llamadas en sentido descendente en subsegmentos. El rastreo Servicios de AWS y los recursos a los que accede dentro de esos servicios (por ejemplo, un bucket de Amazon S3 o una cola de Amazon SQS) aparecen como nodos descendentes en el mapa de rastreo de la consola X-Ray.

El SDK de X-Ray para Java instrumenta automáticamente todos los clientes del SDK de AWS cuando usted incluye el aws-sdk y un submódulo aws-sdk-instrumentor en su compilación. Si no incluye el submódulo Instrumentor, puede elegir instrumentar ciertos clientes a la vez que omite otros.

Para instrumentar a clientes individuales, elimine el aws-sdk-instrumentor submódulo de la compilación y añada XRayClient uno a su cliente del AWS SDK mediante el generador de clientes del servicio. TracingHandler

Por ejemplo, para instrumentar un cliente AmazonDynamoDB, transfiera un controlador de rastros a AmazonDynamoDBClientBuilder.

ejemplo MyModel.java: cliente de 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 los servicios, puede ver el nombre de la API a la que se llama en la consola de X-Ray. Para un subconjunto de servicios, el SDK de X-Ray agrega información al segmento para proporcionar una mayor granularidad en el mapa de servicio.

Por ejemplo, cuando realiza una llamada con un cliente instrumentado de DynamoDB, el SDK agrega el nombre de tabla al segmento para las llamadas que se dirigen a una tabla. En la consola, cada tabla aparece como nodo independiente en el mapa de servicio, con un nodo genérico de DynamoDB para las llamadas que no se dirigen a una tabla.

ejemplo Subsegmento para una llamada a DynamoDB con el fin de guardar un elemento
{ "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", } }

Cuando accede a recursos designados, las llamadas a los siguientes servicios crean nodos adicionales en el mapa de servicio. Las llamadas que no están dirigidas a recursos concretos crean un nodo genérico en el servicio.

  • Amazon DynamoDB: nombre de tabla

  • Amazon Simple Storage Service: nombre de bucket y de clave

  • Amazon Simple Queue Service: nombre de cola

Para instrumentar las llamadas posteriores a la versión Servicios de AWS AWS SDK for Java 2.2 y versiones posteriores, puede omitir el aws-xray-recorder-sdk-aws-sdk-v2-instrumentor módulo de la configuración de compilación. Incluya aws-xray-recorder-sdk-aws-sdk-v2 module en su lugar y después instrumente los clientes por separado configurándolos con TracingInterceptor.

ejemplo AWS SDK for Java 2.2 y versiones posteriores: interceptor de rastreo
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(); //...