View a markdown version of this page

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 eine Amazon SQS-Warteschlange durchlaufen. Wenn ein Service Anfragen mithilfe des X-Ray SDK verfolgt, kann Amazon SQS den Tracing-Header senden und den ursprünglichen Trace mit einer konsistenten Trace-ID weiterhin vom Absender 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 Verfolgung ereignisgesteuerter Anwendungen mithilfe von Amazon SQS und. AWS Lambda Verwenden Sie die CloudWatch Konsole, um eine zusammenhängende Ansicht jeder Anfrage zu sehen, während diese bei Amazon SQS in die Warteschlange gestellt und von einer nachgelagerten Lambda-Funktion verarbeitet wird. Traces von Upstream-Nachrichtenproduzenten werden automatisch mit Traces von nachgelagerten Lambda-Consumer-Nodes verknüpft, wodurch eine umfassende Ansicht der Anwendung entsteht. Weitere Informationen finden Sie unter Tracing ereignisgesteuerter Anwendungen.

Verfolgen Sie die Karte 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 SDK aufrufen. AWS 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.

  • AWSTraceHeaderSystemattribut — Das AWSTraceHeader ist ein Nachrichtensystemattribut, das von Amazon SQS reserviert wurde, um den X-Ray Trace-Header mit Nachrichten in der Warteschlange zu übertragen. AWSTraceHeaderkann auch dann verwendet werden, wenn die automatische Instrumentierung durch das X-Ray SDK nicht möglich ist, beispielsweise beim Erstellen eines Tracing-SDK für eine neue Sprache. Wenn beide Header-Instrumentierungen festgelegt sind, überschreibt das Nachrichtensystemattribut den HTTP-Nachverfolgungs-Header.

Wenn Amazon SQS auf Amazon EC2 ausgeführt wird, unterstützt es die Verarbeitung einer Nachricht nach der anderen. Dies gilt für die Ausführung auf einem lokalen Host und für die Verwendung von Containerdiensten wie AWS Fargate Amazon ECS oder. AWS App Mesh

Der Trace-Header ist sowohl von den Amazon SQS-Kontingenten für Nachrichtengrößen als auch von Nachrichtenattributen ausgeschlossen. Wenn Sie X-Ray das Tracing aktivieren, werden Ihre Amazon SQS-Kontingente nicht überschritten. Weitere Informationen zu AWS Kontingenten finden Sie unter Amazon SQS-Kontingente.

Senden des HTTP-Nachverfolgungs-Headers

Absenderkomponenten in Amazon SQS können den Trace-Header automatisch über den SendMessageBatch SendMessage OR-Aufruf senden. Wenn AWS SDK-Clients instrumentiert sind, können sie automatisch in allen vom SDK unterstützten Sprachen nachverfolgt werden. X-Ray Traced 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 Trace-Map in der Konsole als Downstream-Knoten angezeigt. X-Ray

Um zu erfahren, wie Sie AWS SDK-Aufrufe in Ihrer bevorzugten Sprache verfolgen können, lesen Sie die folgenden Themen in den unterstützten SDKs:

Abrufen des Nachverfolgungs-Headers und Wiederherstellen des Nachverfolgungskontexts

Wenn Sie einen Lambda-Downstream-Consumer verwenden, erfolgt die Trace-Kontext-Propagierung automatisch. Um die Kontext-Propagierung mit anderen Amazon SQS-Verbrauchern fortzusetzen, müssen Sie die Übergabe an die Empfängerkomponente manuell 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 eine Beispielimplementierung, die mit dem X-Ray SDK für 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)); } }