Nachverfolgen von AWS SDK-Aufrufen 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.

Nachverfolgen von AWS SDK-Aufrufen mit dem X-Ray SDK for Java

Wenn Ihre Anwendung Aufrufe an tätigt, AWS-Services um Daten zu speichern, in eine Warteschlange zu schreiben oder Benachrichtigungen zu senden, verfolgt das X-Ray SDK for Java die Aufrufe nachgelagert in Teilsegmenten . Nachverfolgte AWS-Services und Ressourcen, auf die Sie innerhalb dieser Services zugreifen (z. B. ein Amazon S3-Bucket oder eine Amazon SQS-Warteschlange), werden auf der Ablaufverfolgungskarte in der X-Ray-Konsole als nachgelagerte Knoten angezeigt.

Das X-Ray SDK for Java instrumentiert automatisch alle AWS SDK-Clients, wenn Sie die - aws-sdk und -aws-sdk-instrumentorSubmodule in Ihren Build aufnehmen. Untermodule Wenn Sie das Instrumentor-Untermodul nicht einbeziehen, können Sie auswählen, welche Clients Sie instrumentieren möchten, und andere ausschließen.

Um einzelne Clients zu instrumentieren, entfernen Sie das aws-sdk-instrumentor Submodul aus Ihrem Build und fügen Sie ein XRayClient als TracingHandler auf Ihrem AWS SDK-Client hinzu, indem Sie den Client-Builder des Services verwenden.

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 können Sie den Namen der API mit dem Namen in der X-Ray-Konsole sehen. Für eine Teilmenge von -Services fügt das X-Ray-SDK dem Segment Informationen hinzu, um mehr Granularität in der Service-Übersicht zu gewährleisten.

Wenn Sie beispielsweise einen Aufruf 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-Übersicht angezeigt, mit einem generischen DynamoDB-Knoten für Aufrufe, die keine Tabelle anvisieren.

Beispiel Untersegment für einen Aufruf an 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 – Name der Warteschlange

Um Downstream-Aufrufe an AWS-Services mit AWS SDK for Java 2.2 und höher zu instrumentieren, 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 – 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(); //...