Protokollierung und Metriken fürAWS Lambda - AWS Präskriptive Leitlinien

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.

Protokollierung und Metriken fürAWS Lambda

Lambdamacht die Verwaltung und Überwachung von Servern für Ihre Workloads überflüssig und funktioniert automatisch mit CloudWatchMetriken und CloudWatch Protokolliert den Code Ihrer Anwendung ohne weitere Konfiguration oder Instrumentierung. Dieser Abschnitt hilft Ihnen, die Leistungsmerkmale der von Lambda verwendeten Systeme zu verstehen und zu verstehen, wie sich Ihre Konfigurationsentscheidungen auf die Leistung auswirken. Er hilft Ihnen auch dabei, Ihre Lambda-Funktionen zu protokollieren und zu überwachen, um die Leistung zu optimieren und Probleme auf Anwendungsebene zu diagnostizieren.

Protokollierung von Lambda-Funktionen

Lambda streamt automatisch Standardausgaben und Standardfehlermeldungen von einer Lambda-Funktion zu CloudWatch Protokolle, ohne dass Protokollierungstreiber erforderlich sind. Lambda stellt außerdem automatisch Container bereit, auf denen Ihre Lambda-Funktion ausgeführt wird, und konfiguriert sie so, dass Protokollnachrichten in separaten Protokollströmen ausgegeben werden.

Nachfolgende Aufrufe Ihrer Lambda-Funktion können denselben Container wiederverwenden und in denselben Protokollstream ausgeben. Lambda kann auch einen neuen Container bereitstellen und den Aufruf in einem neuen Protokollstream ausgeben.

Lambda erstellt automatisch eine Protokollgruppe, wenn Ihre Lambda-Funktion zum ersten Mal aufgerufen wird. Lambda-Funktionen können mehrere Versionen haben und Sie können die Version auswählen, die Sie ausführen möchten. Alle Protokolle für die Aufrufe der Lambda-Funktion werden in derselben Protokollgruppe gespeichert. Der Name kann nicht geändert werden und befindet sich im/aws/lambda/<YourLambdaFunctionName>Format. In der Protokollgruppe wird für jede Lambda-Funktionsinstanz ein separater Protokollstream erstellt. Lambda hat eine Standardbenennungskonvention für Protokollstreams, die a verwendetYYYY/MM/DD/[<FunctionVersion>]<InstanceId>Format. DasInstanceIdwird generiert vonAWSum die Lambda-Funktionsinstanz zu identifizieren.

Wir empfehlen Ihnen, Ihre Protokollnachrichten im JSON-Format zu formatieren, da Sie sie einfacher abfragen können mit CloudWatch Logt Einblicke. Sie können auch einfacher gefiltert und exportiert werden. Sie können eine Logging-Bibliothek verwenden, um diesen Vorgang zu vereinfachen, oder Ihre eigenen Funktionen zur Protokollverarbeitung schreiben. Wir empfehlen Ihnen, eine Logging-Bibliothek zu verwenden, um Protokollnachrichten zu formatieren und zu klassifizieren. Wenn Ihre Lambda-Funktion beispielsweise in Python geschrieben ist, können Sie diePython-Protokollierungsmodulum Nachrichten zu protokollieren und das Ausgabeformat zu kontrollieren. Lambda verwendet nativ die Python-Logging-Bibliothek für in Python geschriebene Lambda-Funktionen, und Sie können den Logger innerhalb Ihrer Lambda-Funktion abrufen und anpassen.AWS Labs hat das erstelltAWSLambda Powertools für PythonEntwickler-Toolkit zur einfacheren Anreicherung von Protokollnachrichten mit wichtigen Daten wie Kaltstarts. Das Toolkit ist für Python, Java, Typescript und .NET verfügbar.

Eine weitere bewährte Methode besteht darin, den Protokollausgabepegel mithilfe einer Variablen festzulegen und ihn an die Umgebung und Ihre Anforderungen anzupassen. Der Code Ihrer Lambda-Funktion könnte zusätzlich zu den verwendeten Bibliotheken je nach Protokollausgabestufe eine große Menge an Protokolldaten ausgeben. Dies kann sich auf Ihre Protokollierungskosten und die Leistung auswirken.

Mit Lambda können Sie Umgebungsvariablen für Ihre Lambda-Funktions-Laufzeitumgebung festlegen, ohne Ihren Code aktualisieren zu müssen. Sie können beispielsweise eine erstellenLAMBDA_LOG_LEVELUmgebungsvariable, die die Protokollausgabeebene definiert, die Sie aus Ihrem Code abrufen können. Im folgenden Beispiel wird versucht, eine abzurufenLAMBDA_LOG_LEVELUmgebungsvariable und verwenden Sie den Wert, um die Logging-Ausgabe zu definieren. Wenn die Umgebungsvariable nicht gesetzt ist, ist sie standardmäßigINFOEbene.

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

Logs an andere Ziele senden von CloudWatch

Sie können Protokolle an andere Ziele senden (z. B. an Amazon OpenSearch Service oder eine Lambda-Funktion) mithilfe von Abonnementfiltern. Wenn Sie Amazon nicht verwenden OpenSearch Service, Sie können eine Lambda-Funktion verwenden, um die Protokolle zu verarbeiten und sie an einen zu sendenAWSService Ihrer Wahl unter Verwendung desAWSSDKs.

Sie können SDKs auch für Protokollziele außerhalb des verwendenAWSCloud in Ihrer Lambda-Funktion, um Protokollanweisungen direkt an ein Ziel Ihrer Wahl zu senden. Wenn Sie sich für diese Option entscheiden, empfehlen wir Ihnen, die Auswirkungen der Latenz, der zusätzlichen Verarbeitungszeit, der Fehler- und Wiederholungsbehandlung sowie der Kopplung der Betriebslogik mit Ihrer Lambda-Funktion zu berücksichtigen.

Lambda-Funktionsmetriken

Mit Lambda können Sie Ihren Code ausführen, ohne Server verwalten oder skalieren zu müssen. Dadurch entfällt fast der Aufwand für Prüfungen und Diagnosen auf Systemebene. Es ist jedoch weiterhin wichtig, die Leistungs- und Aufrufmetriken auf Systemebene für Ihre Lambda-Funktionen zu verstehen. Dies hilft Ihnen, die Ressourcenkonfiguration zu optimieren und die Codeleistung zu verbessern. Durch eine effektive Überwachung und Messung der Leistung können Sie die Benutzererfahrung verbessern und Ihre Kosten senken, indem Sie Ihre Lambda-Funktionen entsprechend dimensionieren. In der Regel verfügen Workloads, die als Lambda-Funktionen ausgeführt werden, auch über Metriken auf Anwendungsebene, die erfasst und analysiert werden müssen. Lambda unterstützt direkt das eingebettete metrische Format, um die Erfassung auf Anwendungsebene zu ermöglichen CloudWatch Metriken einfacher.

Metriken auf Systemebene

Lambda integriert sich automatisch mit CloudWatch Metriken und bietet eine Reihe vonStandardmetriken für Ihre Lambda-Funktionen. Lambda bietet außerdem ein separates Monitoring-Dashboard für jede Lambda-Funktion mit diesen Metriken. Zwei wichtige Metriken, die Sie überwachen müssen, sind Fehler und Aufruffehler. Wenn Sie die Unterschiede zwischen Aufruffehlern und anderen Fehlertypen verstehen, können Sie Lambda-Bereitstellungen diagnostizieren und unterstützen.

Aufruffehlerverhindern Sie, dass Ihre Lambda-Funktion ausgeführt wird. Diese Fehler treten auf, bevor Ihr Code ausgeführt wird, sodass Sie in Ihrem Code keine Fehlerbehandlung implementieren können, um sie zu identifizieren. Stattdessen sollten Sie Alarme für Ihre Lambda-Funktionen konfigurieren, die diese Fehler erkennen und die Betriebs- und Workload-Besitzer benachrichtigen. Diese Fehler hängen häufig mit einem Konfigurations- oder Berechtigungsfehler zusammen und können aufgrund einer Änderung Ihrer Konfiguration oder Ihrer Berechtigungen auftreten. Aufruffehler können zu einem erneuten Versuch führen, was zu mehreren Aufrufen Ihrer Funktion führt.

Eine erfolgreich aufgerufene Lambda-Funktion gibt eine HTTP 200-Antwort zurück, auch wenn von der Funktion eine Ausnahme ausgelöst wird. Ihre Lambda-Funktionen sollten eine Fehlerbehandlung implementieren und Ausnahmen auslösen, sodassErrorsMetrik erfasst und identifiziert fehlgeschlagene Ausführungen Ihrer Lambda-Funktion. Sie sollten eine formatierte Antwort von Ihren Lambda-Funktionsaufrufen zurückgeben, die Informationen enthält, anhand derer Sie feststellen können, ob die Ausführung vollständig, teilweise oder erfolgreich fehlgeschlagen ist.

CloudWatch bietetCloudWatch Lambda Insightsdie Sie für einzelne Lambda-Funktionen aktivieren können. Lambda Insights sammelt, aggregiert und fasst Metriken auf Systemebene zusammen (z. B. CPU-Zeit, Arbeitsspeicher-, Festplatten- und Netzwerknutzung). Lambda Insights sammelt, aggregiert und fasst auch Diagnoseinformationen zusammen (z. B. Kaltstarts und Lambda-Worker-Shutdowns), um Ihnen zu helfen, Probleme zu isolieren und schnell zu lösen.

Lambda Insights verwendet das eingebettete Metrikformat, um automatisch Leistungsinformationen an die/aws/lambda-insights/Protokollgruppe mit einem Log-Stream-Namenspräfix, das auf dem Namen Ihrer Lambda-Funktion basiert. Diese Leistungsprotokollereignisse erzeugen CloudWatch Metriken, die die Grundlage für automatische CloudWatch Dashboards. Wir empfehlen, Lambda Insights für Leistungstests und Produktionsumgebungen zu aktivieren. Zu den weiteren von Lambda Insights erstellten Metriken gehörenmemory_utilizationDies hilft dabei, die Lambda-Funktionen richtig zu dimensionieren, sodass Sie nicht für nicht benötigte Kapazität bezahlen müssen.

Anwendungsmetriken

Sie können auch Ihre eigenen Anwendungsmetriken in erstellen und erfassen CloudWatch unter Verwendung des eingebetteten metrischen Formats. Sie können es nutzenAWS stellte Bibliotheken für das eingebettete metrische Format zur Verfügungum Anweisungen im eingebetteten metrischen Format zu erstellen und auszugeben an CloudWatch. Das integrierte Lambda CloudWatch Die Protokollierungsfunktion ist so konfiguriert, dass sie entsprechend formatierte Anweisungen im eingebetteten metrischen Format verarbeitet und extrahiert.