NachverfolgungAWSAufrufen von SDK mit dem X-Ray SDK for Java - AWS X-Ray

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

NachverfolgungAWSAufrufen von SDK mit dem X-Ray SDK for Java

Wenn Ihre Bewerbung telefoniertAWS-Diensten zum Speichern von Daten, Schreiben in eine Warteschlange zu schreiben oder Benachrichtigungen zu senden, verfolgt das X-Ray-SDK SDK for Java die Aufrufe nachgelagert inUntersegmenteaus. NachverfolgteAWS-Services und -Ressourcen, auf die Sie innerhalb dieser Services zugreifen (z. B. ein Amazon S3 S3-Bucket oder eine Amazon SQS SQS-Warteschlange) erscheinen als nachgelagerte Knoten in der Service-Übersicht der X-Ray-Konsole.

Das X-Ray SDK for Java instrumentiert automatisch alle AWS-SDK-Clients, wenn Sie dasaws-sdkund einaws-sdk-instrumentor UntermoduleIn Ihrem Build. Wenn Sie das Instrumentor-Untermodul nicht einbeziehen, können Sie auswählen, welche Clients Sie instrumentieren möchten, und andere ausschließen.

Um einzelne Kunden zu instrumentieren, entfernen Sie dieaws-sdk-instrumentorSubmodul aus deinem Build und füge einXRayClientalsTracingHandlerauf IhrerAWSSDK-Client mit dem Client-Builder des Dienstes.

Wenn Sie beispielsweise einen AmazonDynamoDB-Client instrumentieren möchten, übergeben Sie einen Ablaufverfolgungshandler an AmazonDynamoDBClientBuilder.

Beispiel MyModel.java - DynamoDB-Client

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(); ...

Für alle -Services sehen Sie den Namen der API, die in der X-Ray-Konsole aufgerufen wird. Für eine Teilmenge von Diensten fügt das X-Ray SDK dem Segment Informationen hinzu, um mehr Granularität in der Service-Map zu bieten.

Wenn Sie beispielsweise einen Anruf mit einem instrumentierten DynamoDB-Client tätigen, fügt das SDK dem Segment den Tabellennamen für Aufrufe hinzu, die auf eine Tabelle abzielen. In der Konsole wird jede Tabelle als separater Knoten in der Service-Map mit einem generischen DynamoDB-Knoten für Aufrufe angezeigt, die keine Tabelle abzielen.

Beispiel Untersegment für einen Aufruf von DynamoDB zum Speichern eines Elements

{ "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", } }

Wenn Sie auf benannte Ressourcen zugreifen, werden durch Aufrufe der folgenden Services weitere Knoten in der Service-Übersicht erstellt. Durch Aufrufe, die keinen bestimmten Ressourcen gelten, wird ein generischer Knoten für den Service erstellt.

  • Amazon DynamoDB— Tabellenname

  • Amazon Simple Storage Service— Bucket und Schlüsselname

  • Amazon Simple Queue Service— Warteschlangenname

Wenn Sie nachgelagerte Aufrufe von AWS-Services mit AWS SDK for Java 2.2 oder höher instrumentieren möchten, können Sie das aws-xray-recorder-sdk-aws-sdk-v2-instrumentor-Modul in Ihrer Build-Konfiguration weglassen. Fügen Sie stattdessen das aws-xray-recorder-sdk-aws-sdk-v2 module ein und instrumentieren Sie dann einzelne Clients, indem Sie sie mit einem TracingInterceptor konfigurieren.

Beispiel AWS SDK for Java 2.2 und höher – Ablaufverfolgungs-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(); //...