AWS X-Ray -Konzepte - 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.

AWS X-Ray -Konzepte

AWS X-Ray empfängt Daten von -Services als Segmente . X-Ray gruppiert dann Segmente, die eine gemeinsame Anforderung haben, in Ablaufverfolgungen . X-Ray verarbeitet die Ablaufverfolgungen, um ein Servicediagramm zu generieren, das eine visuelle Darstellung Ihrer Anwendung bietet.

Segmente

Die Datenverarbeitungsressourcen, die Ihre Anwendungslogik ausführen, senden Daten zu ihrer Arbeit als Segment. Ein Segment enthält den Namen der Ressource, Details zu der Anforderung und Details zu den erledigten Aufgaben. Wenn zum Beispiel eine HTTP-Anforderung Ihre Anwendung erreicht, können Daten über Folgendes erfasst werden:

  • Der Host – Hostname, Alias oder IP-Adresse

  • Die Anforderung – Methode, Client-Adresse, Pfad, Benutzeragent

  • Die Antwort – Status, Inhalt

  • Die erledigte Arbeit – Start- und Endzeiten, Untersegmente

  • Probleme, die auftretenFehler, Fehler und Ausnahmen, einschließlich der automatischen Erfassung von Ausnahme-Stacks.

Segmentieren von Daten für eine X-Ray-Ablaufverfolgung

Das X-Ray SDK sammelt Informationen aus Anforderungs- und Antwort-Headern, dem Code in Ihrer Anwendung und Metadaten zu den AWS Ressourcen, auf denen es ausgeführt wird. Sie wählen die zu erfassenden Daten aus, indem Sie Ihre Anwendungskonfiguration oder Ihren Anwendungscode ändern, um eingehende Anforderungen, Downstream-Anforderungen und AWS SDK-Clients zu instrumentieren.

Weitergeleitete Anfragen

Wenn ein Load Balancer oder ein anderer Zwischendienst eine Anfrage an Ihre Anwendung weiterleitet, nimmt X-Ray die Client-IP aus dem -X-Forwarded-ForHeader in der Anfrage und nicht aus der Quell-IP im IP-Paket. Die Client-IP, die für eine weitergeleitete Anforderung aufgezeichnet wird, kann gefälscht werden, daher sollte sie nicht vertrauenswürdig sein.

Sie können das X-Ray-SDK verwenden, um zusätzliche Informationen wie Anmerkungen und Metadaten aufzuzeichnen. Weitere Details über die Struktur und die Informationen, die in Segmenten und Untersegmenten aufgezeichnet werden, finden Sie unter AWS X-Ray Dokumente segmentieren. Segmentdokumente können bis zu 64 KB groß sein.

Untersegmente

Ein Segment kann die Daten zu der geleisteten Arbeit in Untersegmente unterteilen. Untersegmente bieten detailliertere Zeitinformationen und Einzelheiten zu Downstream-Aufrufen, die Ihre Anwendung getätigt hat, um die ursprüngliche Anforderung zu bearbeiten. Ein Untersegment kann zusätzliche Details zu einem Aufruf an eine AWS service, eine externe HTTP-API oder eine SQL-Datenbank enthalten. Sie können sogar beliebige Untersegmente definieren, um spezifische Funktionen oder Codezeilen in Ihrer Anwendung zu instrumentieren.

Untersegmente bieten detailliertere Informationen.

Für Services, die keine eigenen Segmente senden, wie Amazon DynamoDB, verwendet X-Ray Untersegmente, um abgeleitete Segmente und Downstream-Knoten auf der Ablaufverfolgungskarte zu generieren. Dadurch können Sie alle Ihre nachgelagerten Abhängigkeiten einsehen, auch wenn diese keine Ablaufverfolgung unterstützen oder externe Ressourcen sind.

Untersegmente geben die Ansicht eines nachgelagerten Aufrufs Ihrer Anwendung als Client wieder. Wenn der nachgelagerte Service ebenfalls instrumentiert ist, ersetzt das von ihm gesendete Segment das abgeleitete Segment, das aus dem Untersegment des vorgelagerten Clients generiert wurde. Der Knoten im Service-Diagramm verwendet immer Informationen vom Segment des Services, sofern verfügbar, während die Edge zwischen den beiden Knoten das Untersegment des nachgelagerten Services verwendet.

Wenn Sie beispielsweise DynamoDB mit einem instrumentierten AWS SDK-Client aufrufen, zeichnet das X-Ray-SDK ein Untersegment für diesen Aufruf auf. DynamoDB sendet kein Segment, sodass das abgeleitete Segment in der Ablaufverfolgung, der DynamoDB-Knoten im Servicediagramm und die Kante zwischen Ihrem Service und DynamoDB alle Informationen aus dem Untersegment enthalten.

Edge zwischen einer instrumentierten Anwendung und DynamoDB .

Wenn Sie einen weiteren instrumentierten Service mit einer instrumentierten Anwendung aufrufen, sendet der nachgelagerte Service ein eigenes Segment, um seine Ansicht desselben Aufrufs aufzuzeichnen, den der vorgelagerte Service in einem Untersegment aufgezeichnet hat. Im Service-Diagramm enthalten die Knoten beider Services Zeit- und Fehlerinformationen aus den Segmenten dieser Services, während die Edge zwischen ihnen Informationen aus dem Untersegment des vorgelagerten Services enthält.

Eine instrumentierte Anwendung, die eine andere instrumentierte Anwendung aufruft.

Beide Ansichten sind nützlich, da der nachgelagerte Service genau aufzeichnet, wann die Verarbeitung der Anfrage gestartet und beendet wurde, und der vorgelagerten Service zeichnet die Umlauflatenz auf, einschließlich der Zeit für die Übertragung der Latenz zwischen den beiden Services.

Service-Diagramm

X-Ray verwendet die Daten, die Ihre Anwendung sendet, um ein Servicediagramm zu generieren. Jede AWS Ressource, die Daten an X-Ray sendet, wird als Service im Diagramm angezeigt. Grenzen verbinden die Services, die gemeinsam Anforderungen bearbeiten. Edges verbinden Clients mit Ihrer Anwendung und Ihre Anwendung mit den Downstream-Services sowie den verwendeten Ressourcen.

Servicenamen

Die eines Segments name sollten mit dem Domänennamen oder dem logischen Namen des Services übereinstimmen, der das Segment generiert. Dies wird jedoch nicht durchgesetzt. Jede Anwendung, die berechtigt ist, Segmente mit einem beliebigen Namen zu PutTraceSegments senden.

Eine Service-Graphik ist ein JSON-Dokument, das Informationen zu den Services und Ressourcen enthält, aus denen Ihre Anwendung besteht. Die X-Ray-Konsole verwendet das Servicediagramm, um eine Visualisierung oder Servicekarte zu generieren.

Trace-Übersicht

Für eine verteilte Anwendung kombiniert X-Ray Knoten aus allen Services, die Anforderungen mit derselben Ablaufverfolgungs-ID verarbeiten, in einem einzigen Servicediagramm. Der erste Service, den die Anforderung findet, fügt einen Nachverfolgungskopf hinzu, der zwischen dem Frontend und den davon aufgerufenen Services verteilt wird.

Beispielsweise führt Scorekeep eine Web-API aus, die einen Mikroservice (eine AWS Lambda -Funktion) aufruft, die mithilfe einer Node.js-Bibliothek einen zufälligen Namen generiert. Das X-Ray SDK for Java generiert die Ablaufverfolgungs-ID und fügt sie in Aufrufe an Lambda ein. Lambda sendet Nachverfolgungsdaten und übergibt die Nachverfolgungs-ID an die Funktion. Das X-Ray SDK for Node.js verwendet auch die Ablaufverfolgungs-ID, um Daten zu senden. Daher werden Knoten für die API, den Lambda-Service und die Lambda-Funktion alle als separate, aber verbundene Knoten auf der Ablaufverfolgungskarte angezeigt.

Servicediagrammdaten werden 30 Tage lang aufbewahrt.

Ablaufverfolgungen

Eine Ablaufverfolgungs-ID verfolgt den Weg einer Anforderung durch Ihre Anwendung. Eine Ablaufverfolgung sammelt alle von einer einzelnen Anforderung generierten Segmente. Bei dieser Anforderung handelt es sich in der Regel um eine HTTP GET- oder POST-Anforderung, die über einen Load Balancer weitergeleitet wird, Ihren Anwendungscode erreicht und nachgelagerte Aufrufe an andere AWS -Services oder externe Web-APIs generiert. Der erste unterstützte Service, mit dem die HTTP-Anforderungen interagiert, fügt der Anforderung einen Ablaufverfolgungs-ID-Kopf hinzu und verteilt ihn nachgeordnet weiter, um Latenz, Disposition und andere Daten der Anforderung nachzuverfolgen.

Timeline-Ansicht einer Ablaufverfolgung, die alle von einer einzelnen Anforderungen generierten Segmente sammelt

Weitere Informationen zur Abrechnung von X-Ray-Ablaufverfolgungen finden Sie unter -AWS X-Ray Preise. Trace-Daten werden 30 Tage lang aufbewahrt.

Sampling

Um eine effiziente Nachverfolgung zu gewährleisten und ein repräsentatives Beispiel für die Anfragen bereitzustellen, die Ihre Anwendung bedient, wendet das X-Ray-SDK einen Sampling-Algorithmus an, um zu bestimmen, welche Anfragen verfolgt werden. Standardmäßig zeichnet das X-Ray-SDK die erste Anfrage pro Sekunde und fünf Prozent aller zusätzlichen Anfragen auf.

Um zu vermeiden, dass bei den ersten Schritten Servicegebühren anfallen, ist die Standard-Samplingrate konservativ. Sie können X-Ray so konfigurieren, dass die Standard-Samplingregel geändert und zusätzliche Regeln konfiguriert werden, die Sampling basierend auf den Eigenschaften des Services oder der Anforderung anwenden.

Sie können beispielsweise das Sampling deaktivieren und alle Anfragen für Anrufe verfolgen, die den Status ändern oder Benutzer oder Transaktionen bearbeiten. Für große, schreibgeschützte Aufrufe wie Abfragen im Hintergrund, Zustandsprüfungen oder Anschlusswartung können Sie eine niedrige Samplingrate einstellen und erhalten dennoch genügend Daten, um auftretende Probleme zu erkennen.

Weitere Informationen finden Sie unter Konfigurieren von -Samplingregeln.

Ablaufverfolgungs-Header

Alle Anforderungen werden bis zu einem konfigurierbaren Minimum verfolgt. Wenn dieses Minimum erreicht ist, wird ein Prozentsatz der Anforderungen nachverfolgt, um unnötige Kosten zu vermeiden. Die Samplingentscheidung und die Ablaufverfolgungs-ID werden HTTP-Anforderungen in Ablaufverfolgungs-Headern mit der Bezeichnung X-Amzn-Trace-Id hinzugefügt. Der erste in X-Ray integrierte Service, auf den die Anforderung trifft, fügt einen Nachverfolgungs-Header hinzu, der vom X-Ray-SDK gelesen und in der Antwort enthalten wird.

Beispiel Ablaufverfolgungs-Header mit Stammablaufverfolgungs-ID und Samplingentscheidung
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
Sicherheit des Ablaufverfolgungs-Headers

Ein Tracing-Header kann aus dem X-Ray-SDK, einem AWS service oder der Client-Anforderung stammen. Ihre Anwendung kann X-Amzn-Trace-Id aus eingehenden Anforderungen entfernen, um Probleme zu vermeiden, die von Benutzern verursacht werden, die ihren Anforderungen Ablaufverfolgungs-IDs oder Samplingentscheidungen hinzufügen.

Der Ablaufverfolgungs-Header kann auch eine übergeordnete Segment-ID enthalten, wenn die Anforderung von einer instrumentierten Anwendung stammte. Wenn Ihre Anwendung beispielsweise eine nachgelagerte HTTP-Web-API mit einem instrumentierten HTTP-Client aufruft, fügt das X-Ray-SDK die Segment-ID für die ursprüngliche Anforderung zum Ablaufverfolgungs-Header der nachgelagerten Anforderung hinzu. Eine instrumentierte Anwendung, die die nachgelagerte Anforderung verarbeitet, kann die übergeordnete Segment-ID erfassen, um die beiden Anforderungen zu verbinden.

Beispiel Ablaufverfolgungs-Header mit Stammablaufverfolgungs-ID, übergeordnete Segment-ID und Samplingentscheidung
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

Lineage kann von Lambda und anderen AWS services als Teil ihrer Verarbeitungsmechanismen an den Trace-Header angehängt werden und sollte nicht direkt verwendet werden.

Beispiel Ablaufverfolgungs-Header mit Lineage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1|68fd508a:5|c512fbe3:2

Filterausdrücke

Selbst mit Sampling generiert eine komplexe Anwendung eine Fülle von Daten. Die AWS X-Ray Konsole bietet eine easy-to-navigate Ansicht des Servicediagramms. Sie zeigt Status- und Leistungsinformationen, mit denen Sie Probleme und Möglichkeiten zur Optimierung Ihrer Anwendung ermitteln können. Für die erweiterte Ablaufverfolgung können Sie Details der Ablaufverfolgungen für einzelne Anforderungen anzeigen oder Filterausdrücke verwenden, um Ablaufverfolgungen in Bezug auf bestimmte Pfade oder Benutzer zu suchen.

Anzeigen einzelner Ablaufverfolgungen für einzelne Anforderungen

Gruppen

X-Ray unterstützt auch die Gruppenfunktion, um Filterausdrücke zu erweitern. Mit einem Filterausdruck können Sie Kriterien definieren, nach denen Ablaufverfolgungen in der Gruppe akzeptiert werden sollen.

Sie können die Gruppe nach Namen oder Amazon-Ressourcenname (ARN) aufrufen, um ihr eigenes Servicediagramm, Ablaufverfolgungszusammenfassungen und Amazon- CloudWatch Metriken zu generieren. Sobald eine Gruppe erstellt wurde, werden eingehende Ablaufverfolgungen mit dem Filterausdruck der Gruppe verglichen, während sie im X-Ray-Service gespeichert werden. Metriken für die Anzahl der Ablaufverfolgungen, die den einzelnen Kriterien entsprechen, werden CloudWatch minütlich in veröffentlicht.

Durch das Aktualisieren des Filterausdrucks einer Gruppe werden die bereits aufgezeichneten Daten nicht geändert. Die Aktualisierung gilt nur für nachfolgende Ablaufverfolgungen. Dies kann dazu führen, dass im Diagramm neue und alte Ausdrücke zusammengeführt werden. Um dies zu vermeiden, löschen Sie die aktuelle Gruppe und erstellen Sie eine neue.

Anmerkung

Gruppen werden anhand der Anzahl der abgerufenen Ablaufverfolgungen, die dem Filterausdruck entsprechen, in Rechnung gestellt. Weitere Informationen finden Sie unter AWS X-Ray Preise.

Weitere Informationen zu Gruppen finden Sie unter Konfigurieren von Gruppen.

Anmerkungen und Metadaten

Wenn Sie Ihre Anwendung instrumentieren, zeichnet das X-Ray-SDK Informationen über eingehende und ausgehende Anfragen, die verwendeten AWS Ressourcen und die Anwendung selbst auf. Sie können dem Segmentdokument weitere Informationen hinzufügen, wie etwa Anmerkungen und Metadaten. Anmerkungen und Metadaten werden auf der Trace-Ebene aggregiert und können jedem Segment oder Teilsegment hinzugefügt werden.

Anmerkungen sind einfache Schlüssel-Wert-Paare, die zur Verwendung mit Filterausdrücken indiziert sind. Berücksichtigen Sie Anmerkungen, um Daten zur Gruppierung von Ablaufverfolgungen in der Konsole zu verwenden, oder wenn Sie die GetTraceSummaries-API aufrufen.

X-Ray indiziert bis zu 50 Anmerkungen pro Ablaufverfolgung.

Metadaten sind Schlüssel-Wert-Paare mit Werten aller Art (darunter Objekte und Listen), jedoch ohne Indizierung. Verwenden Sie Metadaten zum Aufzeichnen von Daten in der Ablaufverfolgung, die nicht zur Ablaufsuche erforderlich sind.

Sie können Anmerkungen und Metadaten im Fenster mit Segment- oder Teilsegmentdetails auf der Seite Ablaufverfolgungsdetails in der - CloudWatch Konsole anzeigen.

Anmerkungen und Metadaten sind in den Segment- oder Teilsegmentdetails in der CloudWatch Konsole sichtbar

Fehler und Ausnahmen

X-Ray verfolgt Fehler, die in Ihrem Anwendungscode auftreten, und Fehler, die von nachgelagerten Services zurückgegeben werden. Fehler sind wie folgt kategorisiert.

  • Error – Clientfehler (Fehler der Serie 400)

  • Fault – Serverfehler (Fehler der Serie 500)

  • Throttle – Drosselungsfehler (429 Too Many Requests)

Wenn eine Ausnahme auftritt, während Ihre Anwendung eine instrumentierte Anforderung bedient, zeichnet das X-Ray-SDK Details zur Ausnahme auf, einschließlich der Stack-Nachverfolgung, falls verfügbar. Sie können Ausnahmen unter Segmentdetails in der X-Ray-Konsole anzeigen.