Visualisieren Sie Lambda-Funktionsaufrufe mit AWS X-Ray - AWS Lambda

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.

Visualisieren Sie Lambda-Funktionsaufrufe mit AWS X-Ray

Sie können AWS X-Ray es verwenden, um die Komponenten Ihrer Anwendung zu visualisieren, Leistungsengpässe zu identifizieren und Anfragen zu beheben, die zu einem Fehler geführt haben. Ihre Lambda-Funktionen senden Ablaufverfolgungs-Daten an X-Ray und X-Ray verarbeitet die Daten, um eine Service-Map und durchsuchbare Ablaufverfolgungs-Zusammenfassungen zu generieren.

Wenn Sie die X-Ray-Verfolgung in einem Service aktiviert haben, der Ihre Funktion aufruft, sendet Lambda automatisch Ablaufverfolgungen an X-Ray. Der Upstream-Service, wie Amazon API Gateway, oder eine auf Amazon gehostete Anwendung, EC2 die mit X-Ray instrumentiert istSDK, tastet eingehende Anfragen ab und fügt einen Tracing-Header hinzu, der Lambda anweist, Traces zu senden oder nicht. Traces von Upstream-Nachrichtenproduzenten wie Amazon SQS werden automatisch mit Traces von nachgeschalteten Lambda-Funktionen verknüpft, sodass eine end-to-end Ansicht der gesamten Anwendung entsteht. Weitere Informationen finden Sie unter Ablaufverfolgung ereignisgesteuerter Anwendungen im AWS X-Ray -Entwicklerhandbuch.

Anmerkung

X-Ray-Tracing wird derzeit nicht für Lambda-Funktionen mit Amazon Managed Streaming for Apache Kafka (AmazonMSK), selbstverwaltetem Apache Kafka, Amazon MQ mit ActiveMQ und RabbitMQ oder Amazon DocumentDB DocumentDB-Ereignisquellenzuordnungen unterstützt.

Gehen Sie folgendermaßen vor, um die aktive Nachverfolgung Ihrer Lambda-Funktion mit der Konsole umzuschalten:

So aktivieren Sie die aktive Nachverfolgung
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie Configuration (Konfiguration) und dann Monitoring and operations tools (Überwachungs- und Produktionstools).

  4. Wählen Sie Edit (Bearbeiten) aus.

  5. Schalten Sie unter X-Ray Active tracing (Aktive Nachverfolgung) ein.

  6. Wählen Sie Save (Speichern) aus.

Ihre Funktion benötigt die Berechtigung zum Hochladen von Trace-Daten zu X-Ray. Wenn Sie die aktive Nachverfolgung in der Lambda-Konsole aktivieren, fügt Lambda der Ausführungsrolle Ihrer Funktion die erforderlichen Berechtigungen hinzu. AWSXRayDaemonWriteAccessAndernfalls fügen Sie die Richtlinie der Ausführungsrolle hinzu.

X-Ray verfolgt nicht alle Anfragen an Ihre Anwendung nach. X-Ray wendet einen Sampling-Algorithmus an, um sicherzustellen, dass die Nachverfolgung effizient ist, und stellt dennoch ein repräsentatives Beispiel aller Anfragen bereit. Die Samplingrate beträgt 1 Anforderung pro Sekunde und 5 Prozent aller weiteren Anforderungen. Sie können die Röntgenabtastrate nicht für Ihre Funktionen konfigurieren.

Grundlegendes zu X-Ray-Ablaufverfolgungen

In X-Ray, zeichnet eine Ablaufverfolgung Informationen zu einer Anforderung auf, die von einem oder mehreren Services verarbeitet wird. Lambda zeichnet 2 Segmente pro Trace auf, wodurch zwei Knoten im Service-Graph erstellt werden. In der folgenden Abbildung werden diese beiden Knoten hervorgehoben:

Eine X-Ray-Servicekarte mit einer einzigen Funktion.

Der erste Knoten auf der linken Seite stellt den Lambda-Service dar, der die Aufrufanforderung empfängt. Der zweite Knoten stellt Ihre spezifische Lambda-Funktion dar.

Das für den Lambda-Service aufgezeichnete Segment deckt alle Schritte abAWS::Lambda, die zur Vorbereitung der Lambda-Ausführungsumgebung erforderlich sind. Dazu gehören die Planung der MicroVM, das Erstellen oder Entsperren einer Ausführungsumgebung mit den von Ihnen konfigurierten Ressourcen sowie das Herunterladen Ihres Funktionscodes und aller Ebenen.

Das AWS::Lambda::Function Segment bezieht sich auf die Arbeit, die von der Funktion geleistet wird.

Anmerkung

AWS implementiert derzeit Änderungen am Lambda-Service. Aufgrund dieser Änderungen können Sie geringfügige Unterschiede zwischen der Struktur und dem Inhalt von Systemprotokollnachrichten und Trace-Segmenten feststellen, die von verschiedenen Lambda-Funktionen in Ihrem AWS-Konto ausgegeben werden.

Diese Änderung wirkt sich auf die Untersegmente des Funktionssegments aus. In den folgenden Abschnitten werden sowohl das alte als auch das neue Format für diese Untersegmente beschrieben.

Diese Änderungen werden in den kommenden Wochen umgesetzt, und alle Funktionen AWS-Regionen außer China und den GovCloud Regionen werden auf die Verwendung von Protokollnachrichten und Trace-Segmenten im neuen Format umgestellt.

AWS X-Ray Lambda-Segmentstruktur im alten Stil

Die alte Röntgenstruktur für das AWS::Lambda Segment sieht wie folgt aus:

Diagramm, das die Struktur einer Röntgenverfolgung im alten Stil zeigt, die ein Aufrufsegment enthält

In diesem Format hat das Funktionssegment Untersegmente fürInitialization, undInvocation. Overhead Lambda SnapStartNur für gibt es auch ein Restore Untersegment (in diesem Diagramm nicht dargestellt).

Das Initialization-Teilsegment stellt die Init-Phase des Lebenszyklus der Lambda-Ausführungsumgebung dar. Während dieser Phase initialisiert Lambda Erweiterungen, initialisiert die Laufzeit und führt den Initialisierungscode der Funktion aus.

Das Invocation-Teilsegment stellt die Aufrufphase dar, in welcher der Lambda-Funktionshandler aufgerufen wird. Dies beginnt mit der Laufzeit- und Erweiterungsregistrierung und endet, wenn die Laufzeit bereit ist, die Antwort zu senden.

( SnapStart Nur Lambda) Das Restore Untersegment zeigt die Zeit, die Lambda benötigt, um einen Snapshot wiederherzustellen, die Runtime (JVM) zu laden und alle afterRestore Runtime-Hooks auszuführen. Der Prozess der Wiederherstellung von Snapshots kann Zeit beinhalten, die für Aktivitäten außerhalb der MicroVM aufgewendet wird. Diese Zeit wird im Restore-Untersegment erfasst. Die Zeit, die Sie außerhalb der microVM für die Wiederherstellung eines Snapshots aufwenden, wird Ihnen nicht in Rechnung gestellt.

Das Overhead-Teilsegment stellt die Phase dar, die zwischen dem Zeitpunkt, zu dem die Laufzeit die Antwort sendet, und dem Signal für den nächsten Aufruf auftritt. Während dieser Zeit beendet die Laufzeit alle Aufgaben im Zusammenhang mit einem Aufruf und bereitet sich auf das Einfrieren der Sandbox vor.

Wichtig

Sie können das X-Ray verwendenSDK, um das Invocation Untersegment um zusätzliche Untersegmente für Downstream-Aufrufe, Anmerkungen und Metadaten zu erweitern. Sie können nicht direkt auf das Funktionssegment zugreifen oder Arbeiten außerhalb des Handler-Aufruffunktionsbereichs aufzeichnen.

Weitere Hinweise zu den Phasen der Lambda-Ausführungsumgebung finden Sie unterDen Lebenszyklus der Lambda-Ausführungsumgebung verstehen.

Eine Beispielspur mit der alten Röntgenstruktur ist in der folgenden Abbildung dargestellt.

Diagramm, das ein Beispiel für einen Röntgen-Trace im alten Stil zeigt, der ein Aufrufsegment enthält

Beachten Sie die beiden Segmente im Beispiel. Beide haben den Namen my-function, aber eines hat einen Ursprung von AWS::Lambda und das andere hat einen Ursprung vonAWS::Lambda::Function. Wenn das AWS::Lambda Segment einen Fehler anzeigt, hatte der Lambda-Service ein Problem. Wenn das AWS::Lambda::Function Segment einen Fehler anzeigt, ist bei Ihrer Funktion ein Problem aufgetreten.

Anmerkung

Gelegentlich bemerken Sie in Ihren X-Ray-Ablaufverfolgungen eine große Lücke zwischen den Phasen der Funktionsinitialisierung und des Funktionsaufrufs. Bei Funktionen, die bereitgestellte Gleichzeitigkeit verwenden, liegt dass daran, dass Lambda Ihre Funktions-Instances lange vor dem Aufruf initialisiert. Für Funktionen, die unreservierte (On-demand) Gleichzeitigkeit verwenden, kann Lambda eine Funktions-Instance proaktiv initialisieren, auch wenn kein Aufruf erfolgt. Visuell werden diese beiden Fälle als Zeitlücke zwischen der Initialisierungs- und der Aufrufphase angezeigt.

AWS X-Ray Lambda-Segmentstruktur im neuen Stil

Die neue X-Ray-Struktur für das AWS::Lambda Segment sieht wie folgt aus:

Diagramm, das die Struktur eines neuen X-Ray-Trace ohne Aufrufsegment zeigt

In diesem neuen Format stellt das Init Untersegment nach wie vor die Anfangsphase des Lebenszyklus der Lambda-Ausführungsumgebung dar.

Im neuen Format gibt es kein Aufrufsegment. Stattdessen werden Kundenuntersegmente direkt an das AWS::Lambda::Function Segment angehängt. Dieses Segment enthält die folgenden Kennzahlen als Anmerkungen:

  • aws.responseLatency- die Zeit, die für die Ausführung der Funktion benötigt wurde

  • aws.responseDuration- die Zeit, die benötigt wurde, um die Antwort an den Kunden zu übermitteln

  • aws.runtimeOverhead- die zusätzliche Zeit, die die Laufzeit bis zum Abschluss benötigt hat

  • aws.extensionOverhead— die zusätzliche Zeit, die die Erweiterungen bis zur Fertigstellung benötigten

Eine Beispielspur mit der neuen Röntgenstruktur ist in der folgenden Abbildung dargestellt.

Diagramm, das ein Beispiel für einen neuen X-Ray-Trace ohne das Aufrufsegment zeigt

Beachten Sie die beiden Segmente im Beispiel. Beide haben den Namen my-function, aber eines hat einen Ursprung von AWS::Lambda und das andere hat einen Ursprung vonAWS::Lambda::Function. Wenn das AWS::Lambda Segment einen Fehler anzeigt, hatte der Lambda-Service ein Problem. Wenn das AWS::Lambda::Function Segment einen Fehler anzeigt, ist bei Ihrer Funktion ein Problem aufgetreten.

In den folgenden Themen finden Sie eine sprachspezifische Einführung in die Ablaufverfolgung in Lambda:

Eine vollständige Liste der Dienste, die Active Instrumentation unterstützen, finden Sie im AWS X-Ray Developer Guide unter Unterstützte AWS Dienste.

Berechtigungen für die Ausführungsrolle

Lambda benötigt die folgenden Berechtigungen, um Ablaufverfolgungsdaten an X-Ray zu senden. Fügen Sie sie der Ausführungsrolle Ihrer Funktion hinzu.

Diese Berechtigungen sind in der AWSXRayDaemonWriteAccessverwalteten Richtlinie enthalten.

Der AWS X-Ray Dämon

Anstatt Trace-Daten direkt an das X-Ray zu sendenAPI, SDK verwendet das X-Ray einen Daemon-Prozess. Der AWS X-Ray Daemon ist eine Anwendung, die in der Lambda-Umgebung ausgeführt wird und auf UDP Datenverkehr wartet, der Segmente und Untersegmente enthält. Sie puffert eingehende Daten und schreibt sie in X-Ray in Batches, wodurch der Verarbeitungs- und Speicheraufwand reduziert wird, der zum Nachverfolgen von Aufrufen erforderlich ist.

Die Lambda-Laufzeit erlaubt dem Daemon bis zu 3 Prozent des konfigurierten Speichers Ihrer Funktion oder 16 MB, je nachdem, welcher Wert größer ist. Wenn Ihre Funktion während des Aufrufs nicht genügend Arbeitsspeicher hat, beendet die Laufzeitumgebung zuerst den Daemon-Prozess, um Speicher freizugeben.

Der Daemon-Prozess wird vollständig von Lambda verwaltet und kann nicht vom Benutzer konfiguriert werden. Alle Segmente, die durch Funktionsaufrufe generiert werden, werden im selben Konto wie die Lambda-Funktion aufgezeichnet. Der Daemon kann nicht so konfiguriert werden, dass er sie an ein anderes Konto umleitet.

Weitere Informationen finden Sie unter X-Ray-Daemon im X-Ray-Entwicklerhandbuch.

Aktives Tracing mit dem Lambda aktivieren API

Verwenden Sie die folgenden Operationen, um die Ablaufverfolgungskonfiguration mit dem AWS CLI oder AWS SDK zu verwalten: API

Der folgende AWS CLI Beispielbefehl aktiviert die aktive Ablaufverfolgung für eine Funktion namens my-function.

aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

Der Ablaufverfolgungsmodus ist Teil der versionsspezifischen Konfiguration, wenn Sie eine Version Ihrer Funktion veröffentlichen. Sie können den Ablaufverfolgungsmodus für eine veröffentlichte Version nicht ändern.

Aktiviert die aktive Ablaufverfolgung mit AWS CloudFormation

Um die Ablaufverfolgung für eine AWS::Lambda::Function Ressource in einer AWS CloudFormation Vorlage zu aktivieren, verwenden Sie die TracingConfig Eigenschaft.

Beispiel function-inline.yml – Ablaufverfolgungskonfiguration
Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Verwenden Sie für eine AWS::Serverless::Function Ressource AWS Serverless Application Model (AWS SAM) die Tracing Eigenschaft.

Beispiel template.yml – Ablaufverfolgungskonfiguration
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...