Logging und Metriken mit Amazon CloudWatch

Bereitstellen von Anwendungen auf AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Ist es down?

  • Ein Kunde sagt, die App ist kaputt
  • Du hast keine Daten, um das zu prüfen
  • CloudWatch macht aus Vermutungen Antworten

Ein Monitoring-Dashboard mit Fragezeichen: unklar, ob der Service gesund ist oder down

Bereitstellen von Anwendungen auf AWS

Logging vs. Monitoring vs. Observability

Dreispaltiges Diagramm: Logging als unveränderliche Ereignisprotokolle, Monitoring als Metrik-Schwellen mit Alarms, Observability als Datenkorrelation für neue Fragen

  • Logging: diskrete Ereignisse beim Eintreten protokollieren
  • Monitoring: bekannte Metriken gegen Schwellenwerte verfolgen
  • Observability: neue Fragen an deine Daten stellen
  • Für sicheren Betrieb brauchst du alle drei
Bereitstellen von Anwendungen auf AWS

Log groups, Log streams und Retention

  • Log group: benannter Container für zusammengehörige Logs
  • Log stream: eine Sequenz aus einer Quelle
  • Retention: wie lange Logs aufbewahrt werden
  • Logs kosten Geld; setze die Aufbewahrung gezielt

CloudWatch-Logs-Hierarchie: Log group mit mehreren Log streams, jeder Stream zeigt zeitlich geordnete Events, mit Aufbewahrungsdauer und Kostenhinweis

Bereitstellen von Anwendungen auf AWS

Metriken und Custom Metrics

  • Metriken: numerische Zeitreihendaten
  • AWS veröffentlicht viele Service-Metriken automatisch
  • Custom Metrics: Zahlen, die deine App sendet
  • Dimensionen schneiden eine Metrik nach Attributen

CloudWatch-Metriken: links automatisch veröffentlichte AWS-Service-Metriken, rechts eine Custom Metric mit Dimensionen, dazu ein Zeitreihendiagramm mit Schwellenwert-Alarmlinie

Bereitstellen von Anwendungen auf AWS

Das Embedded Metric Format

Eine einzelne strukturierte Log-Zeile enthält deine Metrikwerte plus einen _aws-Block, der CloudWatch sagt, welche Felder Metriken sind:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Bereitstellen von Anwendungen auf AWS

Dashboards und Alarme

CloudWatch-Dashboard mit Widgets links und Alarm-Zustandsmaschine rechts mit OK, ALARM und INSUFFICIENT_DATA; SNS leitet Benachrichtigungen an E-Mail und Automatisierung weiter

  • Dashboard: eine Ansicht mit Charts und Widgets
  • Alarm: löst aus, wenn eine Metrik einen Schwellenwert kreuzt
  • Alarme gehen an SNS, dann E-Mail, SMS oder Automatisierung
  • Alarmiere auf spürbare Symptome, nicht jede Metrik
Bereitstellen von Anwendungen auf AWS

Eine strukturierte Logging-Strategie

  • Als JSON loggen, nicht als Freitext
  • timestamp, level, request ID, user ID aufnehmen
  • Strukturierte Felder sind filter- und abfragbar
  • Einheitlichkeit über Dienste erlaubt Korrelation

Strukturierte JSON-Log-Zeile mit timestamp-, level-, requestId- und userId-Feldern und eine Logs-Insights-Abfrage, die zeigt, wie benannte Felder präzises Filtern und Aggregieren ermöglichen

Bereitstellen von Anwendungen auf AWS

Lass uns üben!

Bereitstellen von Anwendungen auf AWS

Preparing Video For Download...