Serverlose Anwendungen haben die Art und Weise, wie Unternehmen Software erstellen und bereitstellen, verändert und bieten elastische Skalierbarkeit und Pay-per-Execution-Preise. Die ephemere Natur von serverlosen Funktionen macht Beobachtbarkeit und Überwachung jedoch schwieriger als herkömmliche lang laufende Server. Ohne angemessene Instrumentierung wird das Debuggen von Leistungsengpässen oder -ausfällen fast unmöglich. Amazon CloudWatch und Azure Monitor sind die primären nativen Überwachungsdienste für AWS und Azure serverlose Umgebungen. Sie bieten umfassende Protokollierungs-, Metrikerfassungs-, Warn- und Dashboarding-Funktionen, die für die Aufrechterhaltung von serverlosen Anwendungen in der Produktion unerlässlich sind. Dieser Leitfaden geht über die grundlegende Einrichtung hinaus und untersucht erweiterte Überwachungsstrategien, Best Practices und praktische Tipps, um tiefe Einblicke in Ihre serverlosen Workloads zu erhalten.

Warum Serverless Monitoring einen anderen Ansatz erfordert

Herkömmliche Überwachung beruht auf Agenten, die auf virtuellen Maschinen oder Containern installiert sind, um CPU-, Speicher- und Festplattenmetriken zu sammeln. Serverlose Architekturen abstrahieren die zugrunde liegende Infrastruktur, so dass Sie keine Agenten installieren oder auf das Betriebssystem zugreifen können. Stattdessen sind Sie auf Überwachungsdienste angewiesen, die Telemetrie von der Plattform selbst erhalten. Funktionen sind kurzlebig, potenziell nur Millisekunden und können von null auf Tausende von gleichzeitigen Ausführungsvarianten skaliert werden. Dieses Verhalten erfordert Überwachungstools, die in der Lage sind, Ereignisse mit hoher Geschwindigkeit, kurzer Dauer zu aggregieren und Sichtbarkeit in nahezu Echtzeit zu bieten. CloudWatch und Azure Monitor sind so konzipiert, dass sie diese Eigenschaften handhaben, aber eine ordnungsgemäße Konfiguration ist entscheidend, um Lücken in der Beobachtbarkeit zu vermeiden.

CloudWatch und Azure Monitor

Amazon CloudWatch ist ein Überwachungs- und Beobachtbarkeitsdienst für AWS-Ressourcen und Anwendungen. Für serverlose Dienste sammelt er Metriken von AWS Lambda, API Gateway, DynamoDB, Step Functions und anderen Diensten. CloudWatch Logs nimmt Protokolldaten von Lambda-Funktionsausführungen auf, während CloudWatch Metrics Standard- und benutzerdefinierte Metriken bereitstellt. CloudWatch Alarms löst Aktionen basierend auf metrischen Schwellenwerten aus und CloudWatch Logs Insights ermöglicht SQL-ähnliches Abfragen von Protokolldaten. CloudWatch unterstützt auch Dashboards zum Visualisieren von Metriken über mehrere Konten und Regionen hinweg.

Azure Monitor ist die einheitliche Überwachungsplattform für Azure-Dienste, einschließlich Azure-Funktionen, Logic Apps, Event Grid und API-Verwaltung. Es sammelt Plattformmetriken, Aktivitätsprotokolle und Diagnosedaten. Application Insights, eine Funktion von Azure Monitor, bietet eine umfassende Anwendungsleistungsüberwachung (APM) für serverlose Funktionen. Es verfolgt Anfrageraten, Antwortzeiten, Fehlerraten, Abhängigkeiten und Ausnahmen. Azure Monitor bietet auch Log Analytics-Arbeitsbereiche zum Ausführen von Kusto Query Language (KQL) Abfragen über Protokolldaten und Benachrichtigungen, die Aktionen wie Skalierungsfunktionen oder das Senden von Benachrichtigungen auslösen können.

Obwohl beide Dienste ähnlichen Zwecken dienen, unterscheiden sie sich in Implementierungsnuancen. CloudWatch-Metriken werden 15 Monate lang mit unterschiedlicher Granularität gespeichert, während Azure Monitor-Metriken standardmäßig 93 Tage beibehalten. CloudWatch Logs Insights Gebühren pro GB gescannter Daten, während Azure Monitor Log Analytics Gebühren pro GB aufgenommen und gespeichert. Das Verständnis dieser Preismodelle hilft Ihnen, Kosten zu optimieren und gleichzeitig ausreichende Daten für die Fehlerbehebung zu gewährleisten.

CloudWatch für serverlose Anwendungen einrichten

Die Überwachung einer serverlosen Anwendung auf AWS beginnt mit der Aktivierung von Protokollierung und Metriken für Lambda-Funktionen. Der Lambda-Dienst sendet automatisch eine Reihe von Standardmetriken aus: Aufrufe, Fehler, Drosselungen, Dauer und gleichzeitige Ausführung. Sie müssen jedoch eine benutzerdefinierte Überwachung konfigurieren, um geschäftsspezifische Metriken und detaillierte Protokolle zu erfassen.

Schritt 1: IAM-Berechtigungen für CloudWatch

Lambda-Funktionen erfordern eine IAM-Rolle mit Berechtigungen zum Schreiben von Protokollen in CloudWatch-Protokolle. Fügen Sie die verwaltete -Richtlinie an oder erstellen Sie eine benutzerdefinierte Richtlinie, die , und erlaubt. Ohne diese Berechtigungen werden Protokolldaten nicht gesendet und das Debuggen wird zu Rätselraten.

Schritt 2: Konfiguration von CloudWatch Logs

Jede Lambda-Invokation erzeugt einen Protokollstrom, der nach der Funktion und dem Zeitstempel benannt ist. Die Protokollgruppe aggregiert alle Datenströme für eine Funktion. Sie können die Protokollspeicherung so einstellen, dass eine unbegrenzte Akkumulation vermieden wird. Empfohlen wird, eine Aufbewahrungsrichtlinie (z. B. 30 Tage) festzulegen, um die Datenverwaltung einzuhalten. Verwenden Sie strukturiertes Protokollieren (JSON), um die Abfrage von Protokolldaten mit CloudWatch Logs Insights zu erleichtern.

console.log(JSON.stringify({
 requestId: context.awsRequestId,
 eventType: event.httpMethod,
 statusCode: 200,
 durationMs: performance.now() - startTime
}));

Strukturierte Protokolle erlauben Abfragen wie .

Schritt 3: Erstellen von benutzerdefinierten Metriken und Alarmen

Über Standardmetriken hinaus, emittieren Sie benutzerdefinierte Metriken mit API. Zum Beispiel, verfolgen Sie die Anzahl der Elemente, die pro Ausführung verarbeitet werden, Latenz zu nachgelagerten Diensten oder Fehlerzahl pro Geschäftsfunktion. CloudWatch berechnet für benutzerdefinierte Metriken, also seien Sie selektiv. Erstellen Sie CloudWatch Alarme für kritische Schwellenwerte: einen Alarm auf über 1 Minute für Produktionsfunktionen oder einen Alarm auf , um langsame Ausführung zu erkennen. Alarme können SNS-Benachrichtigungen auslösen, ein anderes Lambda für automatische Behebung aufrufen oder per Webhook an Slack senden.

Schritt 4: Erweiterte Log-Analyse mit CloudWatch Logs Insights

CloudWatch Logs Insights ermöglicht das Abfragen von Loggruppen über mehrere Funktionen hinweg. Sie können Leistungsengpässe identifizieren, indem Sie nach hochdauernden Invocations filtern, Fehler durch die Suche nach Ausnahmezeichenfolgen finden oder die Latenz von p95 messen. Beispielabfrage, um die langsamsten 10 Invocations zu finden:

fields @timestamp, @duration, @message
| filter @duration > 2000
| sort @duration desc
| limit 10

Verwenden Sie Abfrageergebnisse, um Dashboards zu erstellen, die Fehlerraten, Anforderungstrends und Top-Fehler anzeigen. CloudWatch-Dashboards können Metriken und Protokolle von mehreren Konten mithilfe der kontoübergreifenden Beobachtbarkeit kombinieren.

Konfiguration von Azure Monitor für serverlose Anwendungen

Azure Functions sind die primäre serverlose Berechnung in Azure. Standardmäßig emittieren Functions Plattformmetriken wie Function Execution Count und Function Execution Units, aber Sie benötigen Anwendungsinsights für tiefere Einblicke.

Schritt 1: Anwendungs-Insights aktivieren

Wenn Sie eine Azure Function App erstellen, schalten Sie "Application Insights" auf "Ein" um oder fügen Sie eine vorhandene Application Insights-Ressource an. Gehen Sie für vorhandene Funktionen zur Function App im Portal unter "Einstellungen" -> "Application Insights" und aktivieren Sie sie. Dadurch wird automatisch die Funktion zum Senden von Telemetrie: Anforderungen, Abhängigkeiten, Ausnahmen und benutzerdefinierte Ereignisse aktiviert.

Schritt 2: Diagnoseeinstellungen konfigurieren

Für zusätzliche Telemetrie aktivieren Sie die Diagnoseeinstellungen für Ihre Function App, um Logs und Metriken an Log Analytics-Arbeitsbereiche zu senden. Navigieren Sie im Portal zu "Monitoring" -> "Diagnostic settings", fügen Sie dann eine Einstellung zum Streamen von FunctionAppLogs und zu einem Log Analytics-Arbeitsbereich hinzu. Dies gibt Ihnen Zugriff auf Abfrageausführungsprotokolle neben Application Insights-Daten mit KQL.

Schritt 3: Performance mit Application Insights analysieren

Das Application Insights-Dashboard zeigt Anforderungsraten, durchschnittliche Antwortzeiten und Fehlerraten. Verwenden Sie das Performance-Blade, um langsame Operationen zu identifizieren, und das Failures-Blade, um Ausnahmen und Stapel-Traces anzuzeigen. Application Insights unterstützt auch Live-Metriken, die Echtzeit-Telemetrie zum Debuggen von Hot Fixes anzeigen. Sie können Verfügbarkeitstests so einrichten, dass HTTP-gesteuerte Funktionen von mehreren Standorten aus gesendet werden.

Schritt 4: Einstellen von Alarmen in Azure Monitor

Erstellen von Benachrichtigungen basierend auf Metriken oder Protokollabfragen. Zum Beispiel eine Benachrichtigung über "Metric Alert" für "Function Execution Count", wenn sie für 30 Minuten auf Null fällt, was auf ein mögliches Bereitstellungsproblem hinweist. Oder eine "Log Alert", die ausgelöst wird, wenn die Abfrage > 0 zurückgibt. Benachrichtigungen können E-Mails, SMS oder Aktionsgruppen senden, die Azure Automation-Bücher oder Logic Apps ausführen, um automatisch zu beheben.

Erweiterte Überwachungsstrategien für Serverless

Verteilte Rückverfolgung

Serverlose Anwendungen bestehen oft aus mehreren Funktionen, API Gateways, Warteschlangen und Datenbanken. Wenn eine Anforderung mehrere Dienste durchläuft, erfordert die Identifizierung der Ursache der Latenz eine verteilte Nachverfolgung. AWS X-Ray integriert sich mit CloudWatch und Lambda. Aktivieren Sie Active Tracing in Lambda und X-Ray verfolgt Anfragen von API Gateway über Lambda und nachgelagerte Dienste wie DynamoDB oder SQS. Azure Monitor Application Insights bietet ähnliche End-to-End-Transaktionsdiagnosen. Sie können eine Karte aller Abhängigkeiten und ihrer Antwortzeiten anzeigen. Verwenden Sie Korrelations-IDs, um Protokolle über Dienste hinweg zu verknüpfen.

Custom Instrumenting

Standardmetriken und Protokolle erfassen möglicherweise keine Einblicke auf Business-Ebene. Emittieren benutzerdefinierter Metriken für domänenspezifische KPIs: Anzahl der bearbeiteten Aufträge, Cache-Treffer-Ratio, Benutzersitzungen oder Datenbankabfrageleistung. Verwenden Sie auf AWS die -Bibliothek, um strukturierte Metriken mit Dimensionen zu erstellen. Verwenden Sie auf Azure die TrackEvent- und TrackMetric-APIs aus dem Application Insights SDK in Ihrem Funktionscode. Diese Daten können Dashboards für Stakeholder steuern und Machine Learning-Modelle für die Anomalieerkennung einspeisen.

Anomalieerkennung

CloudWatch Metrik Math ermöglicht dynamische Schwellenwerte, aber für eine ausgefeiltere Anomalieerkennung verwenden Sie CloudWatch Anomalieerkennungsbänder. Diese Bänder passen sich an metrische Muster an und reduzieren falsch positive Werte. Azure Monitor bietet intelligente Erkennung, die automatisch auf Anomalien in Fehlerraten, Dauer und Abhängigkeitslatenz aufmerksam macht. Aktivieren Sie diese Funktionen, um Probleme zu erkennen, die statische Schwellenwerte verfehlen.

Kostenüberwachung

Serverloses Monitoring kann teuer werden, wenn es nicht verwaltet wird. CloudWatch Logs Datenaufnahmekosten können während der Zeiträume mit hohem Datenverkehr ansteigen. Legen Sie die Protokollspeicherung für die meisten Funktionen auf 7 oder 30 Tage fest und filtern Sie ausführliche Protokolle, um unnötige Speicherung zu vermeiden. Verwenden Sie auf Azure Samples in Application Insights, um das Telemetrievolumen für Hochdurchsatzfunktionen zu reduzieren. Beide Plattformen ermöglichen es Ihnen, weniger wichtige Protokollpegel (DEBUG) von der Einnahme auszuschließen. Überwachen Sie Ihre monatliche CloudWatch- oder Azure Monitor-Rechnung neben Anwendungsmetriken.

Best Practices für effektive serverlose Beobachtbarkeit

  • Anpassen strukturierter Protokollierung im JSON-Format mit einem konsistenten Schema für alle Funktionen.
  • Verwenden Sie zentralisierte Dashboards, die Metriken und Protokolle von mehreren Diensten kombinieren. CloudWatch-übergreifende Dashboards und Azure Workbooks können Single-Pane-of-Glas-Ansichten bereitstellen.
  • Set proaktive Warnungen für geschäftskritische Metriken (Null-Invokationen, hohe Fehlerrate) und operative Metriken (Kaltstartdauer, Drosseln).
  • Implementieren Sie Korrelations-IDs für alle eingehenden Anforderungen, um End-to-End-Flows zu verfolgen.
  • Überprüfen und reduzieren Sie Rauschen durch Archivierung alter Protokolle und Unterdrückung nicht ausführbarer Warnungen.
  • Kaltstarts genau überwachen. In CloudWatch zeigt die Metrik Kaltstartzeit an. Verwenden Sie in Azure Monitor die benutzerdefinierte Dimension. Optimieren Sie durch bereitgestellte Parallelität oder halten Sie Funktionen warm.
  • Integrieren Sie sich in Incident Management Tools wie PagerDuty oder Opsgenie. Sowohl CloudWatch als auch Azure Monitor können Benachrichtigungen über Webhooks an diese Systeme weiterleiten.

Vergleich von CloudWatch und Azure Monitor: Hauptunterschiede

Obwohl beide Plattformen ähnliche Funktionen bieten, gibt es wichtige Unterschiede, die bei der Auswahl zwischen AWS- und Azure-serverlosen Umgebungen zu berücksichtigen sind:

  • Metriken-Granularität: CloudWatch-Metriken sind mit 1-Minuten-Auflösung verfügbar, mit hochauflösenden Metriken mit 1-Sekunde (zusätzliche Kosten). Azure Monitors Standard-Metriken sind mit 1-Minuten-Standard, aber einige Metriken können in 30-Sekunden-Intervallen mit zusätzlicher Konfiguration gesammelt werden.
  • Log-Analyse: CloudWatch Logs Insights verwendet eine SQL-ähnliche Abfragesprache, während Azure Monitor KQL verwendet, das für die Zeitreihenanalyse leistungsfähiger ist und sich über mehrere Tabellen hinweg verbindet.
  • Preismodell: CloudWatch berechnet pro Metrik, pro aufgenommenem Log GB und pro von Insights gescanntem GB. Azure Monitor berechnet pro aufgenommenem GB in Log Analytics und pro gespeichertem GB an Daten. Für Funktionen mit hohem Datenverkehr kann die einnahmebasierte Preisgestaltung von Azure Monitor vorhersehbarer sein, wenn Sie das Logvolumen kontrollieren.
  • Integration mit anderen Diensten: CloudWatch lässt sich eng mit AWS X-Ray, CloudTrail und VPC Flow Logs integrieren. Azure Monitor integriert sich mit Azure Sentinel, Azure Policy und Microsoft 365 Defender.
  • Multi-Cloud-Unterstützung: Azure Monitor unterstützt AWS- und GCP-Quellen über Konnektoren, während CloudWatch AWS-nativ ist, aber Protokolle von lokal über CloudWatch Agent empfangen kann. Für Multi-Cloud-Architekturen sollten Tools von Drittanbietern wie Datadog oder New Relic für eine einheitliche Beobachtbarkeit in Betracht gezogen werden.

Real-World Monitoring Beispiel: E-Commerce Checkout Flow

Betrachten Sie eine E-Commerce-Serverless-Anwendung auf AWS, die API Gateway, Lambda, DynamoDB und SQS verwendet.

  1. Aktivieren Sie die X-Ray-Tray-Funktion auf API Gateway und Lambda, um jede HTTP-Anfrage über alle nachgelagerten Aufrufe zu verfolgen.
  2. Emittieren Sie benutzerdefinierte Metriken für das Checkout-Volumen, die Erfolgsrate, den Durchschnittspreis und die Latenz des Zahlungsgateways mit dem eingebetteten Metrikformat.
  3. Erstellen Sie ein CloudWatch-Dashboard, das den Checkout-Trichter anzeigt: API-Anforderungszahl, Lambda-Aufrufe, DynamoDB-Lese- / Schreibkapazität und Fehlerzahl pro Schritt.
  4. Alarme einstellen: Wenn die Fehlerquote bei der Kasse über 5 Minuten 1% überschreitet, stellen Sie den Bereitschaftstechniker auf die Seite. Wenn DynamoDB-Drosseln mehr als 10 Mal auftreten, lösen Sie eine automatische Skalierungsrichtlinie aus oder alarmieren Sie das Datenbankteam.
  5. Verwenden Sie CloudWatch Logs Insights, um Anfrage-IDs abzufragen, die fehlgeschlagen sind und mit Zahlungsgateway-Logs korrelieren (von externen Diensten über API an CloudWatch gesendet).

Diese proaktive Überwachung stellt sicher, dass das Team Probleme erkennen und beheben kann, bevor Kunden betroffen sind. Der gleiche Ansatz gilt für Azure mit Azure Functions, Application Insights und Cosmos DB.

Schlussfolgerung

Amazon CloudWatch und Azure Monitor sind für die Verwaltung serverloser Anwendungen in großem Maßstab unerlässlich. Indem Sie über die grundlegenden Protokollierungs- und Umarmungskennzahlen, verteiltes Tracing und intelligente Warnungen hinausgehen, erhalten Sie die erforderliche Transparenz, um hohe Verfügbarkeit und Leistung aufrechtzuerhalten. Beide Plattformen bieten leistungsstarke Funktionen, die bei richtiger Konfiguration die durchschnittliche Zeit bis zur Auflösung reduzieren und zur Optimierung der Kosten beitragen. Mit zunehmender serverloser Einführung zahlt sich die Investition in die Überwachungseinrichtung aus Betriebssicherheit und Geschäftskontinuität. Weitere Informationen finden Sie in den AWS CloudWatch Documentation, Azure Monitor Documentation und Best Practice Guides Ihres Cloud-Anbieters.