Tracciamento delle chiamate AWS SDK con X-Ray SDK for Java - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tracciamento delle chiamate AWS SDK con X-Ray SDK for Java

Quando l'applicazione effettua chiamate per Servizi AWS archiviare dati, scrivere in una coda o inviare notifiche, X-Ray SDK for Java tiene traccia delle chiamate downstream in sottosegmenti. Le risorse tracciate Servizi AWS e a cui accedi all'interno di tali servizi (ad esempio, un bucket Amazon S3 o una coda Amazon SQS) vengono visualizzate come nodi downstream sulla mappa di traccia nella console X-Ray.

L'SDK X-Ray per Java strumenta automaticamente tutti i client SDK AWS quando includi i sottomoduli aws-sdk e un aws-sdk-instrumentor nella build. Se non includi il modulo Instrumentor, puoi scegliere di analizzare alcuni client escludendo gli altri.

Per strumentare i singoli client, rimuovi il aws-sdk-instrumentor sottomodulo dalla build e aggiungi un client XRayClient as a TracingHandler sul tuo AWS SDK utilizzando il client builder del servizio.

Ad esempio, per analizzare un client AmazonDynamoDB, passa un gestore del tracciamento AmazonDynamoDBClientBuilder.

Esempio MyModel.java - Client 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(); ...

Per tutti i servizi, puoi vedere il nome dell'API richiamata nella console X-Ray. Per un sottoinsieme di servizi, l'SDK X-Ray aggiunge informazioni al segmento per fornire una maggiore granularità nella mappa dei servizi.

Ad esempio, quando si effettua una chiamata con un client DynamoDB con strumentazione, l'SDK aggiunge il nome della tabella al segmento per le chiamate destinate a una tabella. Nella console, ogni tabella appare come un nodo separato nella mappa dei servizi, con un nodo DynamoDB generico per le chiamate che non hanno come destinazione una tabella.

Esempio Sottosegmento per una chiamata a DynamoDB per salvare 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", } }

Quando si accede alle risorse con nome, le chiamate ai seguenti servizi creano ulteriori nodi della mappa del servizio. Le chiamate che non sono hanno come obiettivo risorse specifiche creano un nodo generico per il servizio.

  • Amazon DynamoDB: nome della tabella

  • Amazon Simple Storage Service: nome del bucket e della chiave

  • Amazon Simple Queue Service: nome della coda

Per strumentare le chiamate downstream a Servizi AWS with AWS SDK for Java 2.2 e versioni successive, puoi omettere il aws-xray-recorder-sdk-aws-sdk-v2-instrumentor modulo dalla configurazione di build. Al suo posto, includi il aws-xray-recorder-sdk-aws-sdk-v2 module, quindi analizza i singoli client configurandoli con un TracingInterceptor.

Esempio AWS SDK for Java 2.2 e versioni successive - tracing interceptor
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(); //...