Was ist 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.

Was ist AWS X-Ray?

AWS X-Ray ist ein Dienst, der Daten über Anfragen sammelt, die Ihre Anwendung bearbeitet, und Tools bereitstellt, mit denen Sie diese Daten anzeigen, filtern und Einblicke in sie gewinnen können, um Probleme und Optimierungsmöglichkeiten zu identifizieren. Zu jeder verfolgten Anfrage an Ihre Anwendung können Sie detaillierte Informationen nicht nur über die Anfrage und Antwort abrufen, sondern auch über Aufrufe, die Ihre Anwendung an nachgelagerte AWS Ressourcen, Microservices, Datenbanken und Web-APIs sendet.


      X-Ray zeigt detaillierte Informationen zu Bewerbungsanfragen an.

AWS X-Ray empfängt zusätzlich zu AWS-Services Ihren Anwendungsnutzungen, die bereits in X-Ray integriert sind, Traces von Ihrer Anwendung. Die Instrumentierung Ihrer Anwendung beinhaltet das Senden von Trace-Daten für eingehende und ausgehende Anfragen und andere Ereignisse innerhalb Ihrer Anwendung sowie Metadaten zu jeder Anfrage. Viele Instrumentierungsszenarios erfordern nur Konfigurationsänderungen. Sie können beispielsweise alle eingehenden HTTP-Anfragen und Downstream-Aufrufe Ihrer Java-Anwendung instrumentieren. AWS-Services Es gibt mehrere SDKs, Agenten und Tools, die verwendet werden können, um Ihre Anwendung für die Röntgenverfolgung zu instrumentieren. Weitere Informationen finden Sie unter Instrumentierung Ihrer Anwendung.

AWS-Services die in X-Ray integriert sind, können eingehenden Anfragen Tracing-Header hinzufügen, Trace-Daten an X-Ray senden oder den X-Ray-Daemon ausführen. Sie AWS Lambda können beispielsweise Trace-Daten über Anfragen an Ihre Lambda-Funktionen senden und den X-Ray-Daemon auf Workern ausführen, um die Verwendung des X-Ray-SDK zu vereinfachen.


      So funktioniert das X-Ray SDK

Anstatt Trace-Daten direkt an X-Ray zu senden, sendet jedes Client-SDK JSON-Segmentdokumente an einen Daemon-Prozess, der auf UDP-Verkehr wartet. Der X-Ray-Daemon puffert Segmente in einer Warteschlange und lädt sie stapelweise auf X-Ray hoch. Der Daemon ist für Linux, Windows und macOS verfügbar AWS Elastic Beanstalk und auf allen AWS Lambda Plattformen enthalten.

X-Ray verwendet Trace-Daten aus den AWS Ressourcen, die Ihre Cloud-Anwendungen unterstützen, um eine detaillierte Trace-Map zu erstellen. Die Trace-Map zeigt den Client, Ihren Frontend-Dienst und die Back-End-Dienste, die Ihr Frontend-Dienst aufruft, um Anfragen zu verarbeiten und Daten zu speichern. Verwenden Sie die Trace-Map, um Engpässe, Latenzspitzen und andere Probleme zu identifizieren, die Sie lösen müssen, um die Leistung Ihrer Anwendungen zu verbessern.


      Die Trace-Map zeigt den Client, den Front-End-Service und die Back-End-Dienste, die Ihr Front-End-Dienst aufruft, um Anfragen zu verarbeiten und Daten zu speichern

Erste Schritte mit X-Ray

Um loszulegen mit AWS X-Ray:

  • Starten Sie eine Beispielanwendung, die bereits für die Generierung von Trace-Daten instrumentiert ist. In wenigen Minuten können Sie die Beispiel-App starten, Traffic generieren, Segmente an X-Ray senden und eine Trace-Map und Traces in der anzeigen AWS Management Console.

  • Erfahren Sie, wie Sie Ihre Anwendung instrumentieren, einschließlich der Verwendung der X-Ray-SDKs oder der AWS Distro, OpenTelemetry um Trace-Daten an X-Ray zu senden.

  • Erkunden Sie weitere Funktionen AWS-Services, die in X-Ray integriert sind, darunter Sampling und Hinzufügen von Headern zu eingehenden Anfragen, Ausführung des X-Ray-Daemons und automatisches Senden von Trace-Daten an X-Ray.

  • Verwenden Sie die X-Ray-API, die über das AWS SDK oder direkt über HTTPS Zugriff auf alle X-Ray-Funktionen bietet. AWS Command Line Interface

AWS X-Ray Konzepte

AWS X-Ray empfängt Daten von Diensten als Segmente. X-Ray gruppiert dann Segmente, die eine gemeinsame Anforderung haben, in Traces. X-Ray verarbeitet die Traces, um ein Service-Diagramm zu erstellen, 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 Anfrage — Methode, Client-Adresse, Pfad, Benutzeragent

  • Die Antwort — Status, Inhalt

  • Die geleistete Arbeit — Start- und Endzeiten, Untersegmente

  • Auftretende ProblemeFehler, Störungen und Ausnahmen, einschließlich der automatischen Erfassung von Ausnahmestapeln.


        Segmentdaten für eine Röntgenspur

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

Weitergeleitete Anfragen

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

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 einer AWS-Service, einer externen HTTP-API oder einer 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 Dienste, die keine eigenen Segmente senden, wie Amazon DynamoDB, verwendet X-Ray Untersegmente, um abgeleitete Segmente und Downstream-Knoten auf der Trace-Map 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 DynamoDB beispielsweise 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 im Trace, der DynamoDB-Knoten im Service-Graph und die Kante zwischen Ihrem Service und DynamoDB alle Informationen aus dem Subsegment enthalten.


        Schnittstelle 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 Service-Diagramm zu generieren. Jede AWS Ressource, die Daten an X-Ray sendet, wird im Diagramm als Dienst 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.

Namen der Dienste

Der eines Segments name sollte mit dem Domainnamen oder dem logischen Namen des Dienstes übereinstimmen, der das Segment generiert. Dies wird jedoch nicht erzwungen. Jede Anwendung, die über die entsprechende Berechtigung verfügt, PutTraceSegmentskann Segmente mit einem beliebigen Namen 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 den Service Graph, um eine Visualisierung oder Service Map zu generieren.


        Karte verfolgen

Für eine verteilte Anwendung kombiniert X-Ray Knoten aller Dienste, die Anfragen mit derselben Trace-ID verarbeiten, in einem einzigen Service-Graphen. 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 Trace-ID und nimmt sie in Lambda-Aufrufe auf. Lambda sendet Ablaufverfolgungsdaten und übergibt die Trace-ID an die Funktion. Das X-Ray SDK für Node.js verwendet auch die Trace-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 Trace-Map angezeigt.

Die Daten des Service-Diagramms 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 Anfrage handelt es sich in der Regel um eine HTTP-GET- oder POST-Anforderung, die einen Load Balancer durchläuft, Ihren Anwendungscode trifft und Downstream-Aufrufe an andere AWS Dienste 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

Informationen darüber, wie Röntgen-Traces abgerechnet werden, finden Sie unter AWS X-Ray Preise. Trace-Daten werden 30 Tage lang aufbewahrt.

Sampling

Um eine effiziente Ablaufverfolgung zu gewährleisten und eine repräsentative Stichprobe der Anfragen bereitzustellen, die Ihre Anwendung bearbeitet, wendet das X-Ray SDK einen Sampling-Algorithmus an, um zu bestimmen, welche Anfragen nachverfolgt werden. Standardmäßig zeichnet das X-Ray-SDK jede Sekunde die erste Anfrage und fünf Prozent aller weiteren 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 standardmäßige Stichprobenregel geändert und zusätzliche Regeln konfiguriert werden, die das Sampling auf der Grundlage der Eigenschaften des Dienstes oder der Anfrage anwenden.

Möglicherweise möchten Sie das Sampling deaktivieren und alle Anfragen für Anrufe verfolgen, die den Status ändern oder Benutzer oder Transaktionen verarbeiten. 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 X-Ray-integrierte Dienst, auf den die Anfrage trifft, fügt einen Tracing-Header hinzu, der vom X-Ray-SDK gelesen und in die Antwort aufgenommen 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 vom X-Ray SDK AWS-Service, einer oder der Client-Anfrage 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 Downstream-HTTP-Web-API mit einem instrumentierten HTTP-Client aufruft, fügt das X-Ray-SDK die Segment-ID für die ursprüngliche Anfrage zum Tracing-Header der Downstream-Anfrage 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

Lineagekönnen von Lambda und anderen AWS-Services als Teil ihrer Verarbeitungsmechanismen an den Trace-Header angehängt werden und sollten nicht direkt verwendet werden.

Beispiel Tracing-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 Service-Graphen. 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 erweitert die Filterausdrücke und unterstützt auch die Gruppenfunktion. Mit einem Filterausdruck können Sie Kriterien definieren, nach denen Ablaufverfolgungen in der Gruppe akzeptiert werden sollen.

Sie können die Gruppe mit ihrem Namen oder mit dem Amazon-Ressourcennamen (ARN) aufrufen, um ihr eigenes Service-Diagramm, Trace-Zusammenfassungen und CloudWatch Amazon-Metriken zu generieren. Sobald eine Gruppe erstellt wurde, werden eingehende Traces mit dem Filterausdruck der Gruppe verglichen, während sie im X-Ray-Dienst gespeichert werden. Metriken für die Anzahl der Traces, die den einzelnen Kriterien entsprechen, werden CloudWatch minutengenau 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 unterKonfigurieren 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 indexiert bis zu 50 Anmerkungen pro Spur.

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 den Segment- oder Untersegmentdetails auf der Seite mit den Trace-Details in der Konsole anzeigen. CloudWatch


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

Fehler und Ausnahmen

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

  • Error— Client-Fehler (Fehler der Serie 400)

  • Fault— Serverfehler (Fehler der Serie 500)

  • Throttle— Drosselungsfehler (429 zu viele Anfragen)

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