System Design · Modul 5: Zuverlässigkeit & Betrieb

Lektion 3 von 5Text 14 Min.

Monitoring und Observability

Lernziele
  • Monitoring und Observability unterscheiden
  • Logs, Metriken und Traces gezielt einsetzen
  • die goldenen Signale und sinnvolle Alarme festlegen
  • mit Traces die Ursache langsamer Anfragen finden

Ein System, das man nicht beobachten kann, kann man nicht zuverlässig betreiben. Ohne Überwachung erfährt man von Problemen erst, wenn sich Kunden beschweren – oder gar nicht, weil sie einfach wegbleiben. Monitoring beantwortet die Frage „Funktioniert das System?“. Observability geht weiter und beantwortet die Frage „Warum verhält es sich so?“. Diese Lektion zeigt, welche Daten man dafür sammelt, wie man gute Alarme gestaltet und wie man mit Traces die Nadel im Heuhaufen findet.

1. Monitoring und Observability

Definition 3.1
Observability
Die Eigenschaft eines Systems, aus seinen nach außen gegebenen Daten – Logs, Metriken und Traces – auch unerwartete Zustände und deren Ursachen verstehen zu können, ohne neuen Code ausliefern zu müssen.

Klassisches Monitoring prüft bekannte Fragen: Ist der Server erreichbar? Ist die Festplatte voll? Moderne verteilte Systeme scheitern aber oft auf unerwartete Weise – eine bestimmte Kombination aus Nutzer, Kurs und Browser führt zu Fehlern. Observability bedeutet, genug aussagekräftige Daten zu haben, um solche Fragen im Nachhinein zu beantworten. Die drei Säulen dafür sind Logs, Metriken und Traces. Erkunden Sie sie:

ErkundenDie drei Säulen der Observability
AnwendungLogsMetrikenTraces
Anwendung: Erzeugt alle drei Datenarten – am besten einheitlich über OpenTelemetry, einen offenen Standard. (1/4 erkundet)

2. Die goldenen Signale

Was sollte man messen? Googles Site-Reliability-Handbuch empfiehlt vier goldene Signale für jeden Dienst. Latenz: Wie lange dauern Anfragen – getrennt nach erfolgreichen und fehlgeschlagenen, und als Perzentile statt Durchschnitt. Durchsatz: Wie viele Anfragen kommen an? Fehler: Welcher Anteil schlägt fehl? Sättigung: Wie ausgelastet sind die knappsten Ressourcen, etwa Verbindungspools, Speicher oder Warteschlangen? Wer diese vier Werte für jeden wichtigen Dienst im Blick hat, erkennt die meisten Probleme früh.

Tab. 3.1Wofür welche Datenart
FrageBeste Quelle
Ist die Fehlerquote gestiegen?Metriken
Warum ist Buchung 4711 fehlgeschlagen?Logs
Welcher Schritt macht diese Anfrage langsam?Traces
Wie entwickelt sich die Last über Wochen?Metriken
Welche Nutzer sind betroffen?Logs und Traces mit Kontext

3. Traces lesen

Ein Trace zerlegt eine Anfrage in Abschnitte, sogenannte Spans, mit Start und Dauer. So sieht man auf einen Blick, wo die Zeit verbraucht wird. Klicken Sie die Abschnitte an:

Klick-GrafikEin Trace zeigt, wo die Zeit bleibt
SELECT plaetze (ohne Index): Hier liegt das Problem: Die Abfrage durchsucht die ganze Tabelle. Ein Index würde sie auf wenige Millisekunden verkürzen.

Ohne Trace hätte man nur gewusst, dass Buchungen langsam sind. Mit Trace ist die Ursache in Sekunden gefunden: eine Abfrage ohne passenden Index. Damit Traces über mehrere Dienste funktionieren, wird eine Trace-ID mit jeder Anfrage weitergereicht, auch in Warteschlangen hinein. Dieselbe ID erscheint in den Logs, sodass man von einem langsamen Trace direkt zu den zugehörigen Logeinträgen springen kann.

4. Gute Alarme

Alarme sind das Bindeglied zwischen Daten und Menschen. Schlechte Alarme sind schlimmer als keine: Wer jede Nacht wegen belangloser Meldungen geweckt wird, ignoriert irgendwann auch die wichtigen. Ein guter Alarm meldet ein Problem, das Nutzer spüren, verlangt eine Handlung und kommt nicht zu oft. Üben Sie die Einschätzung:

ÜbungGuter oder schlechter Alarm?
  1. Alarm, wenn mehr als 2 % der Buchungen in 5 Minuten fehlschlagen

  2. Alarm, wenn die Prozessorauslastung eines Servers kurz über 80 % steigt

  3. Alarm, wenn das Fehlerbudget des Monats in einer Stunde zu 10 % verbraucht wird

  4. E-Mail bei jedem einzelnen Fehler im Log

  5. Alarm, wenn der älteste Auftrag in der Warteschlange älter als 15 Minuten ist

0 von 5 eingeschätzt
Alarmieren Sie auf Symptome, die Nutzer spüren, nicht auf jede Ursache. Alles andere gehört auf ein Dashboard, das man bei Bedarf ansieht – nicht aufs Telefon mitten in der Nacht.

5. Werkzeuge und Kosten

Für Observability gibt es zahlreiche Werkzeuge: Prometheus und Grafana für Metriken, Loki oder Elasticsearch für Logs, Jaeger oder Tempo für Traces, dazu umfassende kommerzielle Plattformen wie Datadog oder Sentry für Fehler. OpenTelemetry hat sich als herstellerunabhängiger Standard durchgesetzt, um die Daten in der Anwendung zu erfassen; so bleibt man bei der Wahl des Werkzeugs flexibel. Observability kann allerdings teuer werden, denn Logs und Traces entstehen in großen Mengen. Bewährt haben sich Stichproben bei Traces, kurze Aufbewahrungszeiten für ausführliche Logs und das bewusste Weglassen von Rauschen. Personenbezogene Daten wie E-Mail-Adressen oder Passwörter haben in Logs nichts zu suchen.

6. Vom Alarm zur Verbesserung

Überwachung endet nicht beim Alarm. Nach jedem größeren Vorfall lohnt sich eine Nachbetrachtung ohne Schuldzuweisung: Was ist passiert, wie wurde es bemerkt, wie lange dauerte die Behebung, und was ändern wir, damit es nicht wieder passiert? Solche Nachbetrachtungen machen aus Ausfällen Lernchancen. Für ein kleines Team, etwa bei einem Onlineshop für Kaffee, kann das so einfach sein wie eine halbe Seite im Wiki mit Zeitlinie, Ursache und zwei konkreten Aufgaben. Über die Zeit entsteht so ein System, das nicht nur beobachtet wird, sondern mit jeder Störung robuster wird. Dazu gehört auch, Dashboards regelmäßig aufzuräumen und Alarme, die nie zu einer Handlung geführt haben, zu entfernen oder zu entschärfen.

7. Strukturierte Logs und Kontext

Logs sind nur so nützlich wie ihre Struktur. Freitextzeilen wie „Fehler beim Speichern“ helfen kaum, wenn Tausende davon auflaufen. Strukturierte Logs dagegen speichern jede Meldung als Datensatz mit festen Feldern: Zeitpunkt, Schweregrad, Dienst, Trace-ID, Nutzer- oder Mandantenkennung, betroffener Vorgang und Fehlercode. So lassen sich Fragen beantworten wie „Welche Fehler sind seit dem letzten Deployment bei Buchungen für Kurse am Wochenende aufgetreten?“. Wichtig ist ein einheitliches Format über alle Dienste hinweg, damit Logs gemeinsam durchsucht werden können.

Auch Metriken brauchen Kontext, aber mit Bedacht. Eine Metrik für Antwortzeiten lässt sich nach Endpunkt, Region oder Tarif aufschlüsseln. Nach Nutzer-ID aufzuschlüsseln wäre dagegen ein Fehler: Jede neue Kennung erzeugt eine neue Zeitreihe, und die Überwachung wird langsam und teuer. Man spricht von hoher Kardinalität. Für solche detaillierten Fragen sind Logs und Traces da, Metriken bleiben grob und günstig.

Ein letzter praktischer Punkt betrifft Dashboards. Ein gutes Dashboard beantwortet auf einen Blick die Frage, ob das System gesund ist: oben die goldenen Signale der wichtigsten Nutzerwege, darunter Details zu einzelnen Diensten. Zu viele Diagramme verwirren eher, als sie helfen. Für jeden Dienst sollte es außerdem eine kurze Anleitung geben, die beschreibt, welche Alarme es gibt, was sie bedeuten und welche ersten Schritte sinnvoll sind. So kann auch jemand reagieren, der den Dienst nicht selbst gebaut hat, und die Zeit bis zur Behebung sinkt deutlich.

Für kleine Teams lautet die wichtigste Empfehlung: klein anfangen. Ein Fehlerdienst wie Sentry, eine Handvoll Metriken zu den wichtigsten Nutzerwegen, strukturierte Logs mit Trace-ID und zwei oder drei gut gewählte Alarme decken bereits den größten Teil ab. Traces über mehrere Dienste werden wichtig, sobald eine Anfrage mehrere Stationen durchläuft, etwa API, Warteschlange, Worker und externes Sprachmodell. Wer diese Grundlage früh legt, spart sich später viele Stunden der Fehlersuche im Dunkeln. Und wer die Überwachung schon während der Entwicklung nutzt, statt sie erst nach dem Start einzurichten, entdeckt langsame Abfragen und unnötige Aufrufe, bevor sie echte Nutzer treffen.

Quellen und weiterführende Literatur
  1. [1]Beyer, B. et al. (2016): Site Reliability Engineering. Sebastopol: O'Reilly, Kap. 6 (Monitoring Distributed Systems).
  2. [2]Majors, C.; Fong-Jones, L.; Miranda, G. (2022): Observability Engineering. Sebastopol: O'Reilly.
  3. [3]OpenTelemetry Authors (2026): OpenTelemetry Documentation – Traces, Metrics, Logs.
  4. [4]Sigelman, B. H. et al. (2010): Dapper, a Large-Scale Distributed Systems Tracing Infrastructure. Google Technical Report.

Stand: September 2026. Kursmaterial der Klarwerk Akademie. Zahlen zu Latenzen und Kosten sind Größenordnungen zur Orientierung, keine Messwerte.

Abschlussquiz

Drei Fragen – dann ist die Lektion geschafft.

Frage 1 von 3

Welche Datenart zeigt, welcher Schritt eine Anfrage langsam macht?