Wie behebe ich fehlende X-Ray-Traces, Segmente oder Services in der Service Map?

Lesedauer: 8 Minute
0

Ich möchte meine fehlenden AWS-X-Ray-Traces, fehlenden Segmente und fehlenden Services in der Service Map beheben.

Kurzbeschreibung

Fehlende Spuren führen zu fehlenden Diensten in der Service Map. Die folgenden Ursachen führen zu fehlenden Spuren:

  • Falsche Instrumentierung
  • X-Ray SDK kann X-Ray Daemon nicht über die Daemon-Adresse oder Portnummer erreichen
  • X-Ray Daemon kann den X-Ray-Service-Endpunkt nicht erreichen
  • Tracing ist nicht auf der individuellen Service-Ebene konfiguriert
  • Fehlende AWS Identity and Access Management (IAM)-Berechtigungen
  • Konfiguration der Samplingregeln
  • Fehlende Konfiguration im OpenTelemetry Collector

Fehlende Segmente werden durch das Fehlen offener übergeordneter Segmente für die Teilsegmente verursacht. Weitere Informationen finden Sie unter Problembehandlung bei AWS X-Ray.

Behebung

Falsche Instrumentierung

Falsche Instrumentierung bei Verwendung des X-Ray SDK

Wenn Ihr Anwendungscode nicht richtig instrumentiert ist, damit das X-Ray SDK die unterstützten Bibliotheken und Frameworks patcht, kann es sein, dass Traces fehlen. Fehlende Traces werden auch durch Trace-IDs verursacht, die nicht an die Downstream-Services weitergeleitet werden.

Um dieses Problem zu beheben und detailliertere Protokolle in Ihrer Anwendungsprotokolldatei auszugeben, aktivieren Sie die Protokollierung auf Debug-Ebene im SDK. Auf diese Weise können Sie Probleme im Zusammenhang mit der Instrumentierung weiter eingrenzen und den Verlauf der Trace-ID in der gesamten Anwendung verfolgen. Die Protokolle geben auch an, ob ein Trace fehlt, weil der Trace nicht gesampelt wurde oder weil die Instrumentierung falsch konfiguriert ist. Weitere Informationen finden Sie in der Debug-Protokollierung im X-Ray SDK für Java, Node.js, Python, .NET oder Ruby.

**Hinweis:**Wenn die Anwendung einen Agent zur automatischen Instrumentierung für Java verwendet, erfasst sie keine Traces für asynchrone Anfragen und Traces fehlen. Wenn Spuren fehlen, verwenden Sie die manuelle Instrumentierung. Wenn dem X-Ray-SDK einige Funktionen fehlen oder Probleme auftreten, suchen Sie im OpenTelemetry SDK nach dem Autoinstrumentations-Agenten für Java.

Falsche Instrumentierung bei Verwendung des OpenTelemetry SDK

Wenn Sie das OpenTelemetry SDK verwenden und der Anwendungscode nicht richtig instrumentiert ist, um die unterstützten Bibliotheken und Frameworks zu patchen, kann der Code fehlende Spuren enthalten. Fehlende Segmente werden auch durch Trace-IDs verursacht, die nicht an die Downstream-Services weitergeleitet werden.

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  • Aktivieren Sie die Protokollierung auf Debug-Ebene im SDK, um detailliertere Protokolle an Ihre Anwendungsprotokolldatei zu senden. Auf diese Weise können Sie Probleme im Zusammenhang mit der Instrumentierung weiter eingrenzen und den Verlauf der Trace-ID in der gesamten Anwendung verfolgen. Protokolle geben an, ob ein Trace fehlt, weil der Trace nicht gesampelt wurde oder weil die Instrumentierung falsch konfiguriert ist. Weitere Informationen finden Sie in der Debug-Protokollierung im X-Ray SDK für Java, Node.js, Python, .NET oder Ruby.
  • Stellen Sie sicher, dass die Instrumentierung nicht deaktiviert ist. Weitere Informationen finden Sie unter Unterdrückung bestimmter automatischer Instrumentierung auf der OpenTelemetrie-Website.

**Hinweis:**Um Traces mit AWS-Infrastrukturinformationen anzureichern, stellen Sie sicher, dass der AWS Detector für diesen AWS-Service im OpenTelemetry-SDK unterstützt wird. Weitere Informationen finden Sie unter Using the AWS resource Detectors (Verwenden der AWS-Ressourcendetektoren).

X-Ray SDK kann X-Ray Daemon nicht über die Daemon-Adresse oder Portnummer erreichen

Wenn das X-Ray SDK den X-Ray Daemon nicht über die standardmäßige oder konfigurierte Daemon-Portnummer und -Adresse erreichen kann, fehlen Traces. Die X-Ray-Daemon-Adresse wird mit der Umgebungsvariablen AWS\ _XRAY\ _DAEMON\ _ADDRESS an das SDK übergeben. Standardmäßig lauscht der X-Ray Daemon an Port 2000 UDP. Sie können diesen Port über die Befehlszeilenoption und die Konfigurationsdatei ändern, die an den X-ray-Daemon übergeben wird. Weitere Informationen finden Sie unter Verwendung einer Konfigurationsdatei.

Wenn Sie den X-Ray-Daemon mit Debug-Protokollen ausführen, führen Sie den folgenden Befehl aus, um den UDP-Port zu identifizieren, der für den X-Ray-Daemon konfiguriert ist:

./xray -l debug

**Hinweis:**Im folgenden Beispiel wird 3000 als Portnummer identifiziert.

Beispiel für eine Ausgabe:

2023-03-28T15:15:43-07:00 \[Debug\] Listening on UDP 127.0.0.1:3000

Wenn Sie den X-Ray Daemon nicht mit Debug-Protokollen ausführen, aktivieren Sie die Option zum Debuggen von Protokollen und führen Sie den Daemon erneut aus. Weitere Informationen finden Sie unter Verwendung einer Konfigurationsdatei.

**Hinweis:**Wenn Ihr X-Ray Daemon nicht auf demselben Computer wie Ihre Anwendung und das X-Ray-SDK läuft, überprüfen Sie die Regel für eingehenden Datenverkehr und die Regel für eingehenden Netzwerkzugriff. Stellen Sie sicher, dass die Regel für eingehenden Datenverkehr der Sicherheitsgruppe und die Regel für eingehenden Netzwerkzugriff (Network Access Control List) Datenverkehr zulassen. Der Datenverkehr für das X-Ray SDK muss über den Listener-Port des X-Ray Daemon zugelassen werden.

X-Ray Daemon kann den X-Ray-Service-Endpunkt nicht erreichen

Kann Ihr X-Ray Daemon den X-Ray-Service-Endpunkt nicht erreichen, überprüfen Sie Folgendes:

  • Wenn Sie am Quellende einen Proxy konfiguriert haben, überprüfen Sie, ob der Proxy nicht zulässt, dass der Datenverkehr den X-Ray-Dienstendpunkt erreicht.
  • Wenn Sie den X-Ray Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt com.amazonaws.region.xray verwenden, um eine Verbindung zum X-Ray-Service herzustellen, überprüfen Sie die Sicherheitsgruppe. Stellen Sie sicher, dass die angehängte Sicherheitsgruppe ausgehenden Datenverkehr aufweist, der es dem HTTPS-Datenverkehr ermöglicht, Daten an die X-Ray-Service-API zu übertragen. Stellen Sie außerdem sicher, dass die Sicherheitsgruppe eingehenden Datenverkehr auf Port 443 zulässt, um den X-Ray Daemon zuzulassen.
  • Stellen Sie sicher, dass die zugehörige Netzwerk-ACL und der X-Ray-Amazon-VPC-Endpunkt über eine Regel für ausgehenden Netzwerkzugriff verfügen, die Datenverkehr auf Port 443 für überall 0.0.0.0/0 zulässt. Der X-Ray Daemon muss Daten an den X-Ray-Service-Endpunkt senden. Stellen Sie außerdem sicher, dass die Regel für eingehenden Netzwerk-ACL-Datenverkehr den Datenverkehr vom X-Ray Daemon zum Amazon-VPC-Endpunkt zulässt.

Tracing ist nicht auf der individuellen Service-Ebene konfiguriert

Wenn Sie die X-Ray-Konfiguration für bestimmte AWS-Services nicht aktivieren, können Spuren fehlen. Im Folgenden finden Sie eine Liste von AWS-Services, für die die X-Ray-Konfiguration auf Service-Ebene aktiviert sein muss:

Fehlende IAM-Berechtigungen

Vergewissern Sie sich, dass Sie über die erforderlichen IAM-Berechtigungen verfügen:

  • Wenn Sie in den Protokollen des X-Ray-Daemons die Fehlermeldung Zugriff verweigert erhalten, überprüfen Sie die IAM-Berechtigungen. Um Traces an den X-Ray-Dienstendpunkt zu senden, benötigt die X-Ray-Daemon-IAM-Rolle Berechtigungen in der verwalteten AWSXRayDaemonWriteAccess-Richtlinie. Wenn Sie in Ihrer IAM-Richtlinie eine auf Tags basierende Bedingung verwenden, stellen Sie sicher, dass sich die IAM-Richtlinie auf das richtige Tag bezieht. Weitere Informationen finden Sie unter Autorisierung auf der Grundlage von X-Ray-Tags.
  • Wenn der X-Ray Daemon in Amazon Elastic Container Service (Amazon ECS) als Sidecar-Container in der Aufgabe ausgeführt wird, überprüfen Sie die Amazon ECS-Aufgabenrolle. Stellen Sie sicher, dass der Amazon ECS-Aufgabenrolle die AWSXRayDaemonWriteAccess-Richtlinie angehängt ist.
  • Wenn der X-Ray-Daemon in Amazon Elastic Kubernetes Services (Amazon EKS) bereitgestellt wird, überprüfen Sie den Sidecar-Container im Pod. Stellen Sie sicher, dass der Container IAM-Rollen für Dienstkonten (IRSA) verwendet und dass die AWSXRayDaemonWriteAccess-Richtlinie an die IAM-Rolle angehängt ist.
  • Wenn der X-Ray-Daemon in Amazon Elastic Compute Cloud (Amazon EC2) konfiguriert ist, überprüfen Sie das zugehörige Instance-Profil. Stellen Sie sicher, dass an die mit dieser EC2-Instance verknüpfte Instance-Profilrolle die AWSXRayDaemonWriteAccess-Richtlinie angehängt ist.
  • Wenn der X-Ray Daemon in AWS Lambda konfiguriert ist, überprüfen Sie die Lambda-Ausführungsrolle. Vergewissern Sie sich, ob die Lambda-Ausführungsrolle über die AWSXRayDaemonWriteAccess-Richtlinie verfügt. Vergewissern Sie sich, dass die Richtlinie beigefügt ist.
  • Wenn aktives Tracing in Amazon SNS aktiviert ist und Sie Ihre Traces immer noch nicht sehen, konfigurieren Sie eine Ressourcenrichtlinie in X-Ray.

**Hinweis:**Um die X-Ray-Berechtigungen zu überprüfen, verwenden Sie den IAM-Richtliniensimulator, um Ihre IAM-Rolle oder -Richtlinie zu testen, die mit der Ressource verknüpft ist. Überprüfen Sie auch die Service Control Policies (SCPs) für Ihr Unternehmen. SCPs beschränken den Zugriff auf Kontoebene für bestimmte API-Aufrufe.

Eine Liste der von IAM verwalteten Richtlinien für X-Ray finden Sie unter IAM-verwaltete Richtlinien für X-Ray.

Konfiguration der Samplingregeln

Wenn X-Ray SDK- und AWS-Services, die aktives Tracing mit Sampling-Konfiguration unterstützen, keine Traces abtasten, kann es sein, dass Sie Traces verpassen. Verwenden Sie Samplingregeln, um die aufzuzeichnenden Anfragen zu bestimmen. Standardmäßig zeichnet das X-Ray SDK die erste Anfrage jede Sekunde und fünf Prozent aller weiteren Anfragen auf. Sie können die Samplingrate ändern, um die Anzahl der aufgezeichneten Spuren zu verringern oder zu erhöhen.

Ein Reservoir ist beispielsweise auf 1 gesetzt. Ein Reservoir von 1 gibt an, dass die erste Anfrage jeder Sekunde beantwortet wird. Oder die Abtastrate ist auf 0,1 eingestellt. Eine Abtastrate von 0,1 bedeutet, dass 10% der zusätzlichen Anfragen pro Sekunde aufgezeichnet werden.

Da das X-Ray SDK die Anzahl der Anfragen begrenzt, die das SDK aufzeichnet, werden möglicherweise nicht alle Anfragen verfolgt. Um mehr Traces aufzunehmen, erhöhen Sie die Einstellungen für den Speicher und die Samplingrate. Weitere Informationen finden Sie unter Beispiele für Samplingregeln.

**Hinweis:**Wenn Sie mehrere Sampling-Regeln konfiguriert haben und die Anzahl der abgetasteten Traces schwankt, überprüfen Sie die Sampling-Regel, die das X-Ray SDK verwendet. Weitere Informationen finden Sie unter Anzeigen von Samplingergebnissen.

Fehlende Konfiguration im OpenTelemetry Collector

Wenn Sie OpenTelemetry Collector anstelle des X-Ray Daemon verwenden, fehlt möglicherweise die erforderliche Empfänger- und Exporteurkonfiguration. Wenn eine Konfiguration fehlt, werden keine Traces an den X-Ray-Dienstendpunkt gesendet. Überprüfen Sie je nach Empfänger die Empfängerkonfiguration in der Datei config.yaml, um sicherzustellen, dass keine Konfiguration fehlt.

Sehen Sie sich diese Beispielkonfigurationen auf der GitHub-Website an:

**Hinweis:**Stellen Sie sicher, dass die erforderlichen IAM-Berechtigungen in der verwalteten AWSXRayDaemonWriteAccess-Richtlinie enthalten sind.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten