📜 Inhaltsverzeichnis
Monitoring & Observabilityin Cloud Systemen
Ein tiefer Einblick in Metriken, Logging, Tracing und Alerting. Verstehen Sie, wie Sie Ihre Cloud-Anwendungen effektiv überwachen und Probleme proaktiv erkennen.
📊 Was ist Monitoring?
Monitoring ist der Prozess des Sammelns, Analysierens und Verwendens von Informationen, um den Zustand eines Systems zu verfolgen und betriebliche Probleme zu erkennen. Es beantwortet bekannte Fragen über das System (z.B. "Ist der Server erreichbar?", "Wie hoch ist die CPU-Auslastung?").
📈 Performance Tracking
Monitoring of latency, throughput, etc.
⚠️ Fehlererkennung
Identification of failures and anomalies
Traditionelles Monitoring konzentriert sich oft auf vordefinierte Metriken und Schwellenwerte. Es ist reaktiv und hilft, bekannte Probleme zu identifizieren und darauf zu reagieren.
🔬 Was ist Observability?
Observability (Beobachtbarkeit) geht über das traditionelle Monitoring hinaus. Es ist die Fähigkeit, den internen Zustand eines Systems allein durch die Untersuchung seiner externen Outputs (Logs, Metriken, Traces) zu verstehen. Observability ermöglicht es, auch unbekannte Probleme ("unknown unknowns") zu untersuchen und zu verstehen, warum etwas passiert.
Kernaspekte der Observability:
- Proaktive Fehlersuche: Nicht nur reagieren, sondern aktiv nach Mustern suchen.
- Understanding systems: Deep insights into complex, distributed systems.
- Debugging: Schnellere Ursachenanalyse bei Problemen.
- Data-driven decisions: Better basis for optimizations.
🏛️ The 3 pillars of observability
Observability stützt sich auf drei Haupttypen von Telemetriedaten:
1. Metriken (Metrics)
Metriken sind numerische Darstellungen von Daten, die über einen bestimmten Zeitraum gemessen werden. Sie geben einen aggregierten Überblick über den Systemzustand (z.B. CPU-Auslastung, Fehlerraten, Antwortzeiten).
Beispiele:
- System-Metriken: CPU, Speicher, Netzwerkdurchsatz.
- Anwendungs-Metriken: Anzahl Anfragen pro Sekunde, Latenz von API-Endpunkten.
- Business-Metriken: Anzahl Bestellungen, aktive Benutzer.
2. Logs (Logging)
Logs sind unveränderliche, zeitgestempelte Aufzeichnungen von diskreten Ereignissen, die im Laufe der Zeit auftreten. Sie liefern detaillierte, kontextbezogene Informationen über spezifische Vorkommnisse.
Typische Log-Inhalte:
- Fehlermeldungen und Stack Traces.
- Anwendungsstarts und -stopps.
- Sicherheitsrelevante Ereignisse (Login-Versuche).
- Anfragenverarbeitungsschritte.
3. Traces (Distributed Tracing)
Traces stellen den gesamten Pfad einer Anfrage dar, während sie sich durch die verschiedenen Komponenten eines verteilten Systems bewegt. Jeder Schritt (Span) in einem Trace enthält Kontextinformationen wie Dauer, Metadaten und Fehler.
Distributed Tracing ist unerlässlich, um Engpässe und Fehlerquellen in Microservice-Architekturen zu identifizieren.
🛠️ Wichtige Tools & Plattformen
Prometheus & Grafana
Prometheus ist ein Open-Source Monitoring-System mit einem Fokus auf Zeitreihendaten und Alerting.Grafana ist eine beliebte Open-Source-Plattform zur Visualisierung und Analyse von Metriken, oft in Verbindung mit Prometheus, aber auch mit vielen anderen Datenquellen kompatibel.
ELK Stack (Elasticsearch, Logstash, Kibana)
Der ELK Stack ist eine leistungsstarke Kombination für Log-Management und -Analyse:
- Elasticsearch: Such- und Analyse-Engine.
- Logstash: Serverseitige Datenverarbeitungspipeline zum Sammeln und Transformieren von Logs.
- Kibana: Visualization platform for data in Elasticsearch.
Beats (z.B. Filebeat) werden oft als leichtgewichtige Data Shipper eingesetzt.
Cloud-Native: AWS CloudWatch, Azure Monitor
Cloud-Anbieter stellen umfassende Monitoring-Dienste bereit, die tief in ihre Ökosysteme integriert sind:
- AWS CloudWatch: Sammelt Metriken, Logs und Events von AWS-Ressourcen und Anwendungen. Bietet Alarme, Dashboards und Log-Analyse.
- Azure Monitor: Similar functionality for Azure services, including Application Insights for APM.
- Google Cloud Operations Suite (formerly Stackdriver): Monitoring, logging, tracing for GCP.
Other important tools are Jaeger and Zipkin for distributed tracing, Datadog, Dynatrace and New Relic as commercial observability platforms.
🚨 Alerting & Incident Management
Effektives Alerting ist entscheidend, um Teams über kritische Probleme zu informieren, bevor sie Nutzer beeinträchtigen. Ein guter Alert ist aussagekräftig, kontextreich und führt zu einer Aktion.
Best practices for alerting:
- Symptombasiertes Alerting: Alarme sollten auf Symptome (z.B. hohe Fehlerrate, langsame Antwortzeiten), nicht nur auf Ursachen (z.B. hohe CPU-Last) basieren.
- Avoidance of alert fatigue: Too many irrelevant alerts lead to important alerts being ignored.
- Klare Eskalationspfade: Definieren, wer bei welchem Alarm benachrichtigt wird.
- Integration mit Incident Management Tools: z.B. PagerDuty, Opsgenie.
💡 Best practices for monitoring & observability
- Define clear goals (SLOs/SLIs): What does "good performance" mean for your application?
- Instrument your code: Add custom metrics, logs and traces.
- Correlate data: Link metrics, logs and traces to get a complete picture.
- Automate where possible: Dashboards, alerts, reports.
- Regular review and adjustment: Monitoring needs change with the application.
- Culture of observability: Promote the understanding and use of telemetry data throughout the team.
- Kosten im Blick behalten: Das Sammeln und Speichern von Telemetriedaten kann teuer werden.