Observability - eine Einführung

In modernen verteilten Systemen ist Observability unerlässlich, um die Leistung und das Verhalten einer Anwendung vollständig zu verstehen. Sie hilft Entwicklern dabei, Probleme zu erkennen, zu analysieren und zu beheben, noch bevor sie das Endnutzererlebnis beeinträchtigen. Observability stützt sich auf drei Hauptsignale: Logs, Traces und Metriken. Diese Signale liefern unterschiedliche Perspektiven auf das Systemgeschehen und ermöglichen eine ganzheitliche Analyse.

Mit OpenTelemetry, einem Open-Source-Framework für Observability, lassen sich diese Signale standardisiert erfassen und verarbeiten. In diesem Beitrag möchten wir zeigen, wie Logging, Tracing und Metriken gemeinsam genutzt werden können, um ein klares Bild der Systemaktivitäten zu erhalten.

Um den Unterschied zwischen den drei Signalen zu verdeutlichen, stell dir ein einfaches Beispiel vor: Du betrittst einen Raum und machst das Licht per Schalter an und aus.

Logging: die essenziellen Informationen

Logs sind wie Notizen über spezifische Ereignisse, die im System passieren – sie erfassen nur die wesentlichen, kritischen Momente. Stell dir vor, du schaltest den Lichtschalter ein, aber das Licht geht nicht an. Das wäre ein wichtiges Ereignis, das du unbedingt aufzeichnen möchtest. Logs würden in diesem Fall eine Warnung oder einen Fehler vermerken: „Lichtschalter eingeschaltet, aber das Licht ging nicht an.“ Diese Information ist kritisch, weil sie dir sofort sagt, dass etwas nicht funktioniert hat.

Logs erfassen also Fehler und besondere Ereignisse, die unmittelbar relevant sind. Sie bieten eine Momentaufnahme von Problemen im System und geben klare Hinweise auf Dinge, die behoben werden müssen.

Tracing: die detaillierte Aufzeichnung von Abläufen

Während Logs wichtige, einzelne Ereignisse im System festhalten, sind Traces dafür verantwortlich, den größeren Kontext um diese Ereignisse herum bereitzustellen. Ohne diesen Kontext können Logs isoliert wirken und liefern möglicherweise nicht genug Informationen, um den Grund für ein Problem vollständig zu verstehen. Tracing bringt die Puzzleteile zusammen und zeigt, wie sich einzelne Ereignisse im Gesamtbild einfügen.

Stell dir vor, du hast einen Log-Eintrag: „Lichtschalter eingeschaltet, aber das Licht ging nicht an.“ Dies ist ein wichtiger Hinweis darauf, dass ein Problem besteht – aber warum ging das Licht nicht an? Fehlt der Strom? Ist die Glühbirne kaputt? Dieser einzelne Log-Eintrag liefert dir eine Momentaufnahme des Fehlers, aber ohne den Kontext ist es schwierig zu verstehen, was wirklich schiefgelaufen ist

Hier kommt Tracing ins Spiel: Ein Trace dokumentiert den gesamten Ablauf und zeigt, wie sich verschiedene Aktionen miteinander verbinden. Ein Trace könnte in diesem Fall festhalten:

  • Der Lichtschalter wurde um 8:00 Uhr eingeschaltet (Span 1).

  • Das Signal wurde an den Stromkreis gesendet (Span 2).

  • Der Stromkreis hat sich geschlossen (Span 3).

  • Fehler: Die Glühbirne erhielt Strom – das Licht ging aber nicht an (Span 4).

  • Der Lichtschalter wurde um 8:02 Uhr wieder ausgeschaltet (Span 5).

Diese Spans sind wie detaillierte Schritte, die durch die TraceId miteinander verbunden sind. Das Trace zeigt dir genau, welcher Schritt nicht wie erwartet funktioniert hat – in diesem Fall ist es zwar so, dass der Stromkreis zwar geschlossen wurde, aber die Glühbirne kaputt war. Dank der SpanId kannst du also genau nachvollziehen, welcher Schritt des Prozesses das Problem verursacht hat, und du weißt, dass die Log-Nachricht („Licht ging nicht an“) in der Phase der Glühbirne zu verorten ist.

Traces helfen dir, die kleinen Details eines Prozesses nachzuvollziehen, auch wenn das große Ganze vielleicht funktioniert. Sie zeigen dir alle einzelnen Aktionen, die zwischen dem Ein- und Ausschalten des Lichts ablaufen.

Metriken: Überblick über das Gesamtsystem

Metriken liefern quantitative Daten, die das Verhalten deines Systems über einen längeren Zeitraum hinweg aufzeigen. Sie helfen dir, Muster und Trends zu erkennen, die über einzelne Ereignisse hinausgehen, und ermöglichen es dir, das Gesamtbild im Blick zu behalten. Während Logs und Traces auf spezifische Ereignisse und Abläufe eingehen, geben Metriken dir die Möglichkeit, umfassende Daten zur Performance, Verfügbarkeit und Belastung deines Systems zu analysieren.

Anstatt nur in einem Raum zu beobachten, wie oft das Licht ein- und ausgeschaltet wird, könntest du Metriken nutzen, um das Verhalten der gesamten Stromversorgung in einem Haus zu überwachen. Metriken könnten dir zum Beispiel zeigen, wie oft das Licht in verschiedenen Räumen des Hauses an- und ausgeschaltet wird.

Wenn du plötzlich feststellst, dass das Licht in allen Räumen zur gleichen Zeit nicht mehr eingeschaltet wird, könntest du daraus schließen, dass es ein größeres Problem gibt – wie etwa einen kompletten Stromausfall im Haus oder eine Störung im Hauptstromkreis. Anstatt nur ein einzelnes Zimmer zu beobachten, helfen dir die Metriken, das Verhalten des gesamten Hauses zu überwachen und Probleme, die das ganze System betreffen, frühzeitig zu erkennen.

Zusammenfassung

Logs, Traces und Metriken bieten drei komplementäre Perspektiven auf dein System. Logs erfassen kritische Ereignisse und geben Einblicke in spezifische Fehler. Traces setzen diese Ereignisse in einen größeren Zusammenhang und zeigen, wie Prozesse ablaufen und miteinander verknüpft sind. Metriken liefern eine langfristige Übersicht über das Verhalten des Systems und helfen, Trends und Muster zu erkennen.

Diese Signale erfassen vergangene, unveränderbare Aktionen – wie das Einschalten eines Lichts, das nicht „un-eingeschaltet“ werden kann. Logs und Traces dokumentieren, was passiert ist und wie der Ablauf war, während Metriken das Gesamtbild zeigen, wie oft solche Aktionen stattfinden.

Durch die Kombination dieser drei Signale erhältst du eine vollständige Sicht auf das Systemverhalten: Logs zeigen, was passiert ist, Traces erklären, wie es dazu kam, und Metriken bieten Einblicke in das Gesamtverhalten über längere Zeit. Gemeinsam ermöglichen sie eine umfassende Überwachung und frühzeitige Problemerkennung.

Praktische Umsetzung

Wenn Sie wissen möchten, wie Sie Observability in neuen Projekten nutzenstiftend einsetzen können oder Sie in bestehenden Projekten durch Observability Transparenz effektiv verbessern können, dann melden Sie sich bei uns. Sie können vorher aber auch noch einen weiteren Beitrag zu diesem Thema lesen: Dort zeigen wir eine Demo-Applikation mit OpenTelemetry und Grafana, die verdeutlich, wie man das Ganze technisch umsetzen kann.

Zurück
Zurück

Unsere Guidelines für Container Security

Weiter
Weiter

Warum moderne Software gutes UI braucht - und was WPF dazu beitragen kann