Amazon SQS und AWS X-Ray - 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.

Amazon SQS und AWS X-Ray

AWS X-Ray lässt sich in Amazon Simple Queue Service (Amazon SQS) integrieren, um Nachrichten zu verfolgen, die über eine Amazon SQS-Warteschlange übergeben werden. Wenn ein Service Anfragen mithilfe des X-Ray-SDK verfolgt, kann Amazon SQS den Nachverfolgungs-Header senden und die ursprüngliche Nachverfolgung mit einer konsistenten Nachverfolgungs-ID vom Sender an den Verbraucher weitergeben. Die Nachverfolgungskontinuität ermöglicht Benutzern das Nachverfolgen, Analysieren und Debuggen in allen nachgeschalteten Services.

AWS X-Ray unterstützt die Nachverfolgung von ereignisgesteuerten Anwendungen mit Amazon SQS und AWS Lambda. Verwenden Sie die - CloudWatch Konsole, um eine verbundene Ansicht jeder Anfrage anzuzeigen, während sie mit Amazon SQS in die Warteschlange gestellt und von einer nachgelagerten Lambda-Funktion verarbeitet wird. Ablaufverfolgungen von Produzenten von Upstream-Nachrichten werden automatisch mit Ablaufverfolgungen von Downstream-Lambda-Konsumentenknoten verknüpft, wodurch eine end-to-end Ansicht der Anwendung erstellt wird. Weitere Informationen finden Sie unter Nachverfolgung von ereignisgesteuerten Anwendungen.

Trace-Map von Lambda über die Amazon SQS-Warteschlange.

Amazon SQS unterstützt die folgende Tracing-Header-Instrumentierung:

  • Standard-HTTP-Header – Das X-Ray-SDK füllt den Trace-Header automatisch als HTTP-Header aus, wenn Sie Amazon SQS über das AWS SDK aufrufen. Der Standard-Nachverfolgungs-Header wird von X-Amzn-Trace-Id übernommen und entspricht allen Nachrichten, die in einer SendMessage- oder SendMessageBatch-Anfrage enthalten sind. Weitere Informationen zum Standard-HTTP-Header finden Sie unter Ablaufverfolgungs-Header.

  • AWSTraceHeader Systemattribut – Das AWSTraceHeader ist ein Nachrichtensystemattribut, das von Amazon SQS für die Übertragung des X-Ray-Ablaufverfolgungs-Headers mit Nachrichten in der Warteschlange reserviert wurde. AWSTraceHeader ist für die Verwendung verfügbar, auch wenn die automatische Instrumentierung über das X-Ray-SDK nicht erfolgt, z. B. beim Erstellen eines Ablaufverfolgungs-SDK für eine neue Sprache. Wenn beide Header-Instrumentierungen festgelegt sind, überschreibt das Nachrichtensystemattribut den HTTP-Nachverfolgungs-Header.

Bei der Ausführung auf Amazon EC2 unterstützt Amazon SQS die Verarbeitung einer Nachricht nach der anderen. Dies gilt für die Ausführung auf einem On-Premises-Host und für die Verwendung von Container-Services wie , AWS Fargate Amazon ECS oder AWS App Mesh.

Der Trace-Header ist sowohl von Amazon SQS-Nachrichtengröße als auch von den Kontingenten für Nachrichtenattribute ausgeschlossen. Die Aktivierung der X-Ray-Ablaufverfolgung wird Ihre Amazon SQS-Kontingente nicht überschreiten. Weitere Informationen zu AWS Kontingenten finden Sie unter Amazon SQS-Kontingente.

Senden des HTTP-Nachverfolgungs-Headers

Senderkomponenten in Amazon SQS können den Trace-Header automatisch über den - SendMessageBatch oder -SendMessageAufruf senden. Wenn AWS SDK-Clients instrumentiert sind, können sie automatisch über alle Sprachen verfolgt werden, die vom X-Ray-SDK unterstützt werden. 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.

Informationen zum Nachverfolgen von AWS SDK-Aufrufen mit Ihrer bevorzugten Sprache finden Sie in den folgenden Themen in den unterstützten SDKs:

Abrufen des Nachverfolgungs-Headers und Wiederherstellen des Nachverfolgungskontexts

Wenn Sie einen nachgelagerten Lambda-Verbraucher verwenden, erfolgt die Verbreitung des Ablaufverfolgungskontexts automatisch. Um die Kontextverbreitung mit anderen Amazon SQS-Konsumenten fortzusetzen, müssen Sie die Übergabe manuell an die Empfängerkomponente instrumentieren.

Es gibt drei Hauptschritte für die Wiederherstellung des Nachverfolgungskontexts:

  • Empfangen Sie die Nachricht aus der Warteschlange für das AWSTraceHeader-Attribut, indem Sie die ReceiveMessage-API aufrufen.

  • Rufen Sie den Nachverfolgungs-Header aus dem Attribut ab.

  • Stellen Sie die Nachverfolgungs-ID aus dem Header wieder her. Optional können Sie dem Segment weitere Metriken hinzufügen.

Im Folgenden finden Sie ein Beispiel für eine Implementierung, die mit dem X-Ray SDK for Java geschrieben wurde.

Beispiel Abrufen des Nachverfolgungs-Headers und Wiederherstellen des Nachverfolgungskontexts
// Receive the message from the queue, specifying the "AWSTraceHeader" ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest() .withQueueUrl(QUEUE_URL) .withAttributeNames("AWSTraceHeader"); List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); if (!messages.isEmpty()) { Message message = messages.get(0); // Retrieve the trace header from the AWSTraceHeader message system attribute String traceHeaderStr = message.getAttributes().get("AWSTraceHeader"); if (traceHeaderStr != null) { TraceHeader traceHeader = TraceHeader.fromString(traceHeaderStr); // Recover the trace context from the trace header Segment segment = AWSXRay.getCurrentSegment(); segment.setTraceId(traceHeader.getRootTraceId()); segment.setParentId(traceHeader.getParentId()); segment.setSampled(traceHeader.getSampled().equals(TraceHeader.SampleDecision.SAMPLED)); } }