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.
Senden Sie Telemetriedaten von AWS Lambda zu OpenSearch für Analysen und Visualisierungen in Echtzeit
Erstellt von Tabby Ward (AWS), Guy Bachar () und David Kilzer (AWS) AWS
Umgebung: PoC oder Pilotprojekt | Technologien: Serverlos; Modernisierung | AWSDienstleistungen: AWS Lambda; Amazon OpenSearch Service |
Übersicht
Moderne Anwendungen werden zunehmend verteilt und ereignisgesteuert, was die Notwendigkeit von Überwachung und Beobachtbarkeit in Echtzeit verstärkt. AWS Lambda ist ein serverloser Computerdienst, der eine entscheidende Rolle beim Aufbau skalierbarer und ereignisgesteuerter Architekturen spielt. Die Überwachung und Fehlerbehebung von Lambda-Funktionen kann jedoch schwierig sein, wenn Sie sich ausschließlich auf Amazon CloudWatch Logs verlassen, was zu Latenz und begrenzten Aufbewahrungsfristen führen kann.
Um dieser Herausforderung zu begegnen, AWS wurde die Lambda-Telemetrie eingeführtAPI, mit der Lambda-Funktionen Telemetriedaten direkt an Überwachungs- und Beobachtungstools von Drittanbietern senden können. Dies API unterstützt das Echtzeit-Streaming von Protokollen, Metriken und Traces und bietet einen umfassenden und zeitnahen Überblick über die Leistung und den Zustand Ihrer Lambda-Funktionen.
Dieses Muster erklärt, wie die Lambda-Telemetrie API OpenSearch
Das Muster erklärt, wie die API Lambda-Telemetrieintegration eingerichtet und konfiguriert wird OpenSearch, und enthält bewährte Methoden für Sicherheit, Kostenoptimierung und Skalierbarkeit. Ziel ist es, Ihnen zu helfen, tiefere Einblicke in Ihre Lambda-Funktionen zu gewinnen und die allgemeine Beobachtbarkeit Ihrer serverlosen Anwendungen zu verbessern.
Hinweis: Dieses Muster konzentriert sich auf die Integration der Lambda-Telemetrie API mit Managed. OpenSearch Die besprochenen Prinzipien und Techniken gelten jedoch auch für Self-Managed OpenSearch und Elasticsearch. |
Voraussetzungen und Einschränkungen
Bevor Sie mit dem Integrationsprozess beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
AWS-Konto: Aktiv AWS-Konto mit den entsprechenden Berechtigungen zum Erstellen und Verwalten der folgenden AWS Ressourcen:
AWS Lambda
AWS Identity and Access Management (IAM)
Amazon OpenSearch Service (wenn Sie einen verwalteten OpenSearch Cluster verwenden)
OpenSearch Cluster:
Sie können einen vorhandenen selbstverwalteten OpenSearch Cluster oder einen verwalteten Dienst wie OpenSearch Service verwenden.
Wenn Sie OpenSearch Service verwenden, richten Sie Ihren OpenSearch Cluster ein, indem Sie den Anweisungen unter Erste Schritte mit Amazon OpenSearch Service in der OpenSearch Service-Dokumentation folgen.
Stellen Sie sicher, dass der OpenSearch Cluster über Ihre Lambda-Funktion zugänglich ist und dass er mit den erforderlichen Sicherheitseinstellungen wie Zugriffsrichtlinien, Verschlüsselung und Authentifizierung konfiguriert ist.
Konfigurieren Sie den OpenSearch Cluster mit den erforderlichen Indexzuordnungen und Einstellungen, um die Lambda-Telemetriedaten aufzunehmen. Weitere Informationen finden Sie in der Servicedokumentation unter Laden von Streaming-Daten in Amazon OpenSearch OpenSearch Service.
Netzwerkkonnektivität:
Stellen Sie sicher, dass Ihre Lambda-Funktion über die erforderliche Netzwerkkonnektivität für den Zugriff auf den OpenSearch Cluster verfügt. Anleitungen zur Konfiguration der Virtual Private Cloud (VPC) -Einstellungen finden Sie VPC in der OpenSearch Servicedokumentation unter Starten Ihrer Amazon OpenSearch Service-Domains innerhalb einer.
IAMRollen und Richtlinien:
Erstellen Sie eine IAM Rolle mit den erforderlichen Berechtigungen für Ihre Lambda-Funktion, um auf den OpenSearch Cluster und auf Ihre darin AWS Secrets Manager gespeicherten Anmeldeinformationen zuzugreifen.
Fügen Sie der Rolle die entsprechenden IAM Richtlinien hinzu, z. B. die
AWSLambdaBasicExecutionRole
Richtlinie und alle zusätzlichen Berechtigungen, die für die Interaktion OpenSearch erforderlich sind.Stellen Sie sicher, dass die Ihrer Lambda-Funktion gewährten IAM Berechtigungen es ihr ermöglichen, Daten in den OpenSearch Cluster zu schreiben. Informationen zur Verwaltung von IAM Berechtigungen finden Sie unter Definieren von Lambda-Funktionsberechtigungen mit einer Ausführungsrolle in der Lambda-Dokumentation.
Kenntnisse in Programmiersprachen:
Sie benötigen Grundkenntnisse in Python (oder der Programmiersprache Ihrer Wahl), um den Beispielcode für die Lambda-Funktion und die Lambda-Erweiterung zu verstehen und zu ändern.
Entwicklungsumgebung:
Richten Sie eine lokale Entwicklungsumgebung mit den erforderlichen Tools und Abhängigkeiten für die Erstellung und Bereitstellung von Lambda-Funktionen und -Erweiterungen ein.
AWS CLI oder AWS Management Console:
Installieren und konfigurieren Sie das AWS Command Line Interface (AWS CLI) oder verwenden Sie das AWS Management Console mit den entsprechenden Anmeldeinformationen, um mit den erforderlichen zu interagieren AWS-Services.
Überwachung und Protokollierung:
Machen Sie sich mit bewährten Methoden zur Überwachung und Protokollierung vertraut AWS, einschließlich Diensten wie Amazon CloudWatch und AWS CloudTrail zu Überwachungs- und Prüfungszwecken.
Überprüfen Sie die CloudWatch Logs für Ihre Lambda-Funktion, um Fehler oder Ausnahmen im Zusammenhang mit der API Lambda-Telemetrie-Integration zu identifizieren. Anleitungen zur Fehlerbehebung finden Sie in der Lambda-Telemetrie-Dokumentation API.
Architektur
Dieses Muster verwendet OpenSearch Service, um Protokolle und Telemetriedaten zu speichern, die von Lambda-Funktionen generiert werden. Mit diesem Ansatz können Sie Protokolle schnell direkt in Ihren OpenSearch Cluster streamen, wodurch die Latenz und die Kosten reduziert werden, die mit der Verwendung von CloudWatch Logs als Vermittler verbunden sind.
Hinweis: Ihr Lambda-Erweiterungscode kann Telemetrie an OpenSearch Service weiterleiten, indem Sie entweder direkt die OpenSearch API oder eine OpenSearch Client-Bibliothek |
---|
Das folgende Workflow-Diagramm veranschaulicht den Log-Workflow für Lambda-Funktionen, wenn Sie einen OpenSearch Cluster als Endpunkt verwenden.
Die Architektur umfasst die folgenden Komponenten:
Lambda-Funktion: Die serverlose Funktion, die während der Ausführung Protokolle und Telemetriedaten generiert.
Lambda-Erweiterung: Eine Python-basierte Erweiterung, die die Lambda-Telemetrie verwendet, um direkt in den Cluster API zu integrieren. OpenSearch Diese Erweiterung wird zusammen mit der Lambda-Funktion in derselben Ausführungsumgebung ausgeführt.
Lambda-TelemetrieAPI: API Diese ermöglicht es Lambda-Erweiterungen, Telemetriedaten, einschließlich Logs, Metriken und Traces, direkt an Überwachungs- und Beobachtungstools von Drittanbietern zu senden.
Amazon OpenSearch Service-Cluster: Ein verwalteter OpenSearch Cluster, der auf gehostet wird AWS. Dieser Cluster ist für die Aufnahme, Speicherung und Indizierung der Protokolldaten verantwortlich, die von der Lambda-Funktion über die Lambda-Erweiterung gestreamt werden.
Der Workflow besteht aus den folgenden Schritten:
Die Lambda-Funktion wird aufgerufen und generiert während ihrer Ausführung Protokolle und Telemetriedaten.
Die Lambda-Erweiterung läuft zusammen mit der Funktion zur Erfassung der Protokolle und Telemetriedaten mithilfe der Lambda-Telemetrie. API
Die Lambda-Erweiterung stellt eine sichere Verbindung mit dem OpenSearch Service-Cluster her und streamt die Protokolldaten in Echtzeit.
Der OpenSearch Service-Cluster erfasst, indexiert und speichert die Protokolldaten, um sie mithilfe von Tools wie Kibana oder anderen kompatiblen Anwendungen für die Suche, Analyse und Visualisierung verfügbar zu machen.
Durch die Umgehung von CloudWatch Logs und das direkte Senden von Protokolldaten an den OpenSearch Cluster bietet diese Lösung mehrere Vorteile:
Protokollstreaming und -analyse in Echtzeit ermöglichen eine schnellere Fehlerbehebung und verbesserte Beobachtbarkeit.
Geringere Latenz und potenzielle Aufbewahrungsbeschränkungen im Zusammenhang mit CloudWatch Protokollen.
Flexibilität, um die Lambda-Erweiterung anzupassen oder Ihre eigene Erweiterung für bestimmte Ausgabeformate oder zusätzliche Verarbeitung zu erstellen.
Integration mit den Such-, Analyse- und Visualisierungsfunktionen von OpenSearch Service für die Protokollanalyse und -überwachung.
Der Abschnitt Epics enthält step-by-step Anweisungen zur Einrichtung der Lambda-Erweiterung, zur Konfiguration der Lambda-Funktion und zur Integration in den OpenSearch Service-Cluster. Sicherheitsüberlegungen, Strategien zur Kostenoptimierung und Tipps zur Überwachung und Fehlerbehebung der Lösung finden Sie im Abschnitt Bewährte Methoden.
Tools
AWSDienste
AWS Lambda
ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Amazon OpenSearch Service
ist ein vollständig verwalteter Service von AWS , der die Bereitstellung, den Betrieb und die Skalierung von OpenSearch Clustern in der Cloud vereinfacht. Lambda-Erweiterungen erweitern die Funktionalität Ihrer Lambda-Funktionen, indem sie zusätzlich benutzerdefinierten Code ausführen. Sie können Lambda-Erweiterungen verwenden, um Lambda in verschiedene Überwachungs-, Beobachtungs-, Sicherheits- und Governance-Tools zu integrieren.
AWS Lambda APIMit Telemetrie können Sie Erweiterungen verwenden, um erweiterte Überwachungs- und Beobachtbarkeitsdaten direkt von Lambda zu erfassen und an ein Ziel Ihrer Wahl zu senden.
AWS CloudFormation
unterstützt Sie bei der Modellierung und Einrichtung Ihrer AWS Ressourcen, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können.
Code-Repositorien
AWS Lambda Extensions
umfasst Demos und Beispielprojekte von AWS und AWS Partnern, die Ihnen den Einstieg in die Erstellung Ihrer eigenen Erweiterungen erleichtern. Example Lambda Telemetry Integrations for OpenSearch bietet ein Beispiel für
eine Lambda-Erweiterung, die zeigt, wie Logs von einer Lambda-Funktion an einen Cluster gesendet werden. OpenSearch
Andere Tools
OpenSearch
ist eine verteilte Open-Source-Such- und Analysemaschine, die eine leistungsstarke Plattform für die Erfassung, Speicherung und Analyse großer Datenmengen bietet. Kibana ist ein Open-Source-Tool zur Datenvisualisierung und -erkundung, das Sie mit verwenden können. OpenSearch Beachten Sie, dass die Implementierung von Visualisierung und Analyse den Rahmen dieses Musters sprengen würde. Weitere Informationen finden Sie in der Kibana-Dokumentation
und in anderen Ressourcen.
Bewährte Methoden
Beachten Sie bei der Integration der Lambda-Telemetrie API die folgenden bewährten Methoden. OpenSearch
Sicherheit und Zugriffskontrolle
Sichere Kommunikation: Verschlüsseln Sie die gesamte Kommunikation zwischen Ihren Lambda-Funktionen und dem OpenSearch Cluster mithilfe von. HTTPS Konfigurieren Sie die erforderlichen SSL TLS /-Einstellungen in Ihrer Lambda-Erweiterung und OpenSearch -Konfiguration.
IAMBerechtigungen:
Erweiterungen werden in derselben Ausführungsumgebung wie die Lambda-Funktion ausgeführt, sodass sie dieselbe Zugriffsebene auf Ressourcen wie Dateisystem-, Netzwerk- und Umgebungsvariablen erben.
Gewähren Sie Ihren Lambda-Funktionen die erforderlichen IAM Mindestberechtigungen, um auf die Lambda-Telemetrie zuzugreifen API und Daten in den Cluster zu schreiben. OpenSearch Verwenden Sie das Prinzip der geringsten Rechte, um den Umfang der Berechtigungen einzuschränken.
OpenSearch Zugriffskontrolle: Implementieren Sie eine differenzierte Zugriffskontrolle in Ihrem OpenSearch Cluster, um den Zugriff auf sensible Daten zu beschränken. Verwenden Sie die integrierten Sicherheitsfunktionen wie Benutzerauthentifizierung, rollenbasierte Zugriffskontrolle und Berechtigungen auf Indexebene in. OpenSearch
Vertrauenswürdige Erweiterungen: Installieren Sie immer nur Erweiterungen aus einer vertrauenswürdigen Quelle. Verwenden Sie Infrastructure-as-Code-Tools (IaC) AWS CloudFormation , um beispielsweise das Anhängen derselben Erweiterungskonfiguration, einschließlich IAM Berechtigungen, an mehrere Lambda-Funktionen zu vereinfachen. IaC-Tools bieten auch ein Auditprotokoll der zuvor verwendeten Erweiterungen und Versionen.
Umgang mit sensiblen Daten: Vermeiden Sie beim Erstellen von Erweiterungen die Protokollierung sensibler Daten. Bereinigen Sie Payloads und Metadaten, bevor Sie sie protokollieren oder zu Prüfungszwecken speichern.
Kostenoptimierung
Überwachung und Alarmierung: Richten Sie Überwachungs- und Warnmechanismen ein, um die Datenmenge zu verfolgen, an die Ihre OpenSearch Lambda-Funktionen gesendet werden. Auf diese Weise können Sie potenzielle Kostenüberschreitungen erkennen und beheben.
Aufbewahrung von Daten: Überlegen Sie sich sorgfältig, welche Aufbewahrungsfrist für Ihre Lambda-Telemetriedaten angemessen ist. OpenSearch Längere Aufbewahrungsfristen können die Speicherkosten in die Höhe treiben. Bringen Sie also Ihre Anforderungen an die Beobachtbarkeit mit der Kostenoptimierung in Einklang.
Komprimierung und Indizierung: Aktivieren Sie die Datenkomprimierung und optimieren Sie Ihre OpenSearch Indexierungsstrategie, um den Speicherbedarf Ihrer Lambda-Telemetriedaten zu reduzieren.
Geringere Abhängigkeit von CloudWatch: Durch die API direkte Integration der Lambda-Telemetrie können Sie Ihre Abhängigkeit von CloudWatch Protokollen potenziell reduzieren, was zu Kosteneinsparungen führen kann. OpenSearch Dies liegt daran, dass Sie mit der Lambda-Telemetrie Protokolle direkt an senden API können OpenSearch, sodass die Daten nicht gespeichert und verarbeitet werden müssen. CloudWatch
Skalierbarkeit und Zuverlässigkeit
Asynchrone Verarbeitung: Verwenden Sie asynchrone Verarbeitungsmuster wie Amazon Simple Queue Service (AmazonSQS) oder Amazon Kinesis, um die Ausführung der Lambda-Funktion von der Datenaufnahme zu entkoppeln. OpenSearch Dies trägt dazu bei, die Reaktionsfähigkeit Ihrer Lambda-Funktionen aufrechtzuerhalten und die allgemeine Zuverlässigkeit des Systems zu verbessern.
OpenSearch Cluster-Skalierung: Überwachen Sie die Leistung und die Ressourcennutzung Ihres OpenSearch Clusters und skalieren Sie ihn nach Bedarf nach oben oder unten, um das zunehmende Volumen an Lambda-Telemetrie-Daten zu bewältigen.
Failover und Disaster Recovery: Implementieren Sie eine robuste Notfallwiederherstellungsstrategie für Ihren OpenSearch Cluster, einschließlich regelmäßiger Backups und der Möglichkeit, Daten im Falle eines Ausfalls schnell wiederherzustellen.
Beobachtbarkeit und Überwachung
Dashboards und Visualisierungen: Verwenden Sie Kibana oder andere Dashboard-Tools, um benutzerdefinierte Dashboards und Visualisierungen zu erstellen, die auf der Grundlage der enthaltenen Telemetriedaten Einblicke in die Leistung und den Zustand Ihrer Lambda-Funktionen bieten. OpenSearch
Warnmeldungen und Benachrichtigungen: Richten Sie Warnmeldungen und Benachrichtigungen ein, um Ihre Lambda-Funktionen proaktiv auf Anomalien, Fehler oder Leistungsprobleme zu überwachen. Integrieren Sie diese Warnungen und Benachrichtigungen in Ihre bestehenden Incident-Management-Prozesse.
Rückverfolgung und Korrelation: Stellen Sie sicher, dass Ihre Lambda-Telemetriedaten relevante Tracing-Informationen wie Anfrage IDs oder Korrelation enthaltenIDs, um die end-to-end Beobachtbarkeit und Fehlerbehebung in Ihren verteilten serverlosen Anwendungen zu ermöglichen.
Wenn Sie diese bewährten Methoden befolgen, können Sie sicherstellen, dass Ihre Integration der Lambda-Telemetrie API mit sicher, kostengünstig und skalierbar OpenSearch ist und umfassende Beobachtbarkeit für Ihre serverlosen Anwendungen bietet.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Laden Sie den Quellcode herunter. | Laden Sie die Beispielerweiterungen aus dem AWS Lambda Extensions | App-Entwickler, Cloud-Architekt |
Navigieren Sie zum Verzeichnis | Das AWS Lambda von | App-Entwickler, Cloud-Architekt |
Fügen Sie Berechtigungen hinzu, um den Erweiterungsendpunkt auszuführen. | Führen Sie den folgenden Befehl aus, um den Erweiterungsendpunkt ausführbar zu machen:
| App-Entwickler, Cloud-Architekt |
Installieren Sie die Abhängigkeiten der Erweiterungen lokal. | Führen Sie den folgenden Befehl aus, um lokale Abhängigkeiten für den Python-Code zu installieren:
Diese Abhängigkeiten werden zusammen mit dem Erweiterungscode bereitgestellt. | App-Entwickler, Cloud-Architekt |
Erstellen Sie ein ZIP-Paket für die Erweiterung, um sie als Ebene bereitzustellen. | Die Erweiterung.zip-Datei sollte ein Stammverzeichnis mit dem Namen Erstellen Sie das ZIP-Paket für die Erweiterung:
| App-Entwickler, Cloud-Architekt |
Stellen Sie die Erweiterung als Lambda-Schicht bereit. | Veröffentlichen Sie den Layer mithilfe Ihrer Erweiterung.zip-Datei und dem folgenden Befehl:
| App-Entwickler, Cloud-Architekt |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Fügen Sie die Ebene zu Ihrer Funktion hinzu. |
Weitere Informationen zum Hinzufügen einer Ebene zu Ihrer Lambda-Funktion finden Sie in der Lambda-Dokumentation. | App-Entwickler, Cloud-Architekt |
Legen Sie die Umgebungsvariablen für die Funktion fest. | Wählen Sie auf der Funktionsseite die Registerkarte Konfiguration und fügen Sie Ihrer Funktion die folgenden Umgebungsvariablen hinzu:
| App-Entwickler, Cloud-Architekt |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Fügen Sie Ihrer Funktion Protokollierungsanweisungen hinzu. | Fügen Sie Ihrer Funktion Protokollierungsanweisungen hinzu, indem Sie einen der integrierten Protokollierungsmechanismen oder das Logging-Modul Ihrer Wahl verwenden. Hier sind Beispiele für das Protokollieren von Nachrichten in Python:
| App-Entwickler, Cloud-Architekt |
Testen Sie Ihre Funktion. |
Wenn alles ordnungsgemäß funktioniert, sollte die Meldung „Funktion ausgeführt: erfolgreich“ angezeigt werden. | App-Entwickler, Cloud-Architekt |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Fragen Sie Ihre Indizes ab. | Führen Sie in OpenSearch den folgenden Befehl aus, um Ihre Indizes abzufragen:
Ihre Protokolle sollten in den Abfrageergebnissen angezeigt werden. | Cloud-Architekt |
Fehlerbehebung
Problem | Lösung |
---|---|
Probleme mit der Verbindung |
|
Fehler bei der Datenaufnahme |
|
Zugehörige Ressourcen
Beispiel für Lambda-Telemetrie-Integrationen für OpenSearch
(Repository) GitHub Erweitern Sie Lambda-Funktionen mithilfe von Lambda-Erweiterungen (Lambda-Dokumentation)
Lambda-Telemetrie API (Lambda-Dokumentation)
Einführung in die AWS Lambda Telemetrie API
(Blogbeitrag)AWS Integration der AWS Lambda Telemetrie API mit Prometheus und OpenSearch (Blogbeitrag
)AWS
Zusätzliche Informationen
Änderung der Protokollstruktur
Die Erweiterung sendet Protokolle standardmäßig als verschachteltes Dokument OpenSearch an. Auf diese Weise können Sie verschachtelte Abfragen ausführen, um einzelne Spaltenwerte abzurufen.
Wenn die Standard-Protokollausgabe nicht Ihren spezifischen Anforderungen entspricht, können Sie sie anpassen, indem Sie den Quellcode der Lambda-Erweiterung ändern, die von bereitgestellt wird AWS. AWS ermutigt Kunden, die Ausgabe an ihre Geschäftsanforderungen anzupassen. Um die Protokollausgabe zu ändern, suchen Sie die dispatch_to_opensearch
Funktion in der telemetry_dispatcher.py
Datei im Quellcode der Erweiterung und nehmen Sie die erforderlichen Änderungen vor.