Observability: Monitoring, Logging & Tracing
Den Fehlern auf der Spur mit ConSol
Moderne Applikationen sind komplex. Als Folge generieren sie eine Vielzahl von Mess- und Analysedaten. Diese geben Auskunft über die Gesundheit der Applikation. Und sie helfen im Fehlerfall das Problem zu beheben. Für den Betrachter ergibt sich so jedoch eine kaum überschaubare Datenflut. Observability – Beobachtbarkeit – ist die Fähigkeit, IT-Anwendungen ganzheitlich zu überwachen und so dieser Datenflut Herr zu werden. Dazu gehört, durch die Applikation geeignete Mess- und Analysedaten bereitzustellen. Und Entwickler und Betriebsteams müssen passende Werkzeuge an die Hand bekommen, um im Fehlerfall schnell und zielgerichtet agieren zu können.

Sämtliche Applikationen und die darunter liegende Infrastruktur produzieren Metriken, Logs und, wo sinnvoll, auch Traces. Diese werden von bewährten Open Source Tools wie Prometheus (Metriken), Loki (Logs) oder Jaeger (Traces) gesammelt und aufbereitet. Anschließend werden diese Daten zentral in Grafana-Dashboards visualisiert. An dieser Stelle erhält der Nutzer einen Überblick über für ihn freigegebene Applikationen und Infrastruktur-Komponenten. Zur Langzeitspeicherung der Daten können zusätzlich Datenbanken wie InfluxDB zum Einsatz kommen.
Observability – Auf der Jagd nach „Mister X“
Observability setzt sich im Wesentlichen aus drei Bausteinen zusammen: Monitoring, Logging und Tracing. Das Monitoring gibt uns Auskunft, wenn ein definiertes Service Level oder Qualitätskriterium unterschritten wird. Die Anwendungsentwickler definieren hierfür entsprechende Metriken, welche wiederum direkt aus der Applikation heraus bereitgestellt werden. In den Logs finden wir die Fehlermeldungen der einzelnen Softwarekomponenten. Sie zeigen, an welcher Stelle in den jeweiligen Services der Fehler auftritt. Den Weg, den ein Aufruf zwischen den Services zurückgelegt hat, bevor er zu einem Problem geführt hat, können wir im Tracing nachvollziehen. All diese Informationen können wir mittels Korrelations-IDs gemeinsam in einem zentralen Dashboard betrachten. So bewahren wir auch in komplexen Anwendungen den Überblick und spüren die Fehlerquelle schnell auf.
Observability Tools
Die von uns favorisierten Applikationen für Observability sind Open-Source-Lösungen. Gegenüber kommerziellen Lösungen gibt es hier keinerlei Nachteil. Wir haben sie seit etlichen Jahren sowohl bei unseren Kunden als auch bei uns selbst im produktiven Einsatz. Ihr Funktionsumfang ist beachtlich.

Prometheus ist der De-facto-Standard für Cloud-native Monitoring und Alerting. Es bietet eine einfache Konfiguration, wo und wie Metriken gesammelt werden können. Die meisten Anwendungen unterstützen den Export von Metriken nach Prometheus. Und auch für selbst geschriebene Applikationen gibt es für alle gängigen Programmiersprachen und Frameworks sehr gute Unterstützung des Exports von Metriken nach Prometheus.

Mit Loki können Logs einfach importiert und indiziert werden. Die Konfiguration ist an die von Prometheus angelehnt. Das Ziel ist es, schnell Logs für bestimmte Kriterien zu finden. Daher darf nur ein sehr kleiner Index geschrieben werden. Durch starkes Parallelisieren von Auswertungen können Abfragen selbst bei großen Datenmengen schnell ausgeführt werden.

Grafana wird für das Visualisieren von Metriken verwendet. Es bietet eine sehr gute Integration von Prometheus, Loki und Jaeger. Hiermit lassen sich in Graphen neben Metriken auch Traces anzuzeigen. Es ist außerdem möglich zu einzelnen Traces zu springen und für bestimmte Metriken auch Logs zu diesen Metriken zu zeigen. Neben einer großen Auswahl an vordefinierten Dashboards mit verschiedenen Metriken kann der Benutzer auch selbst Dashboards erstellen.

Jaeger unterstützt den OpenTracing-Standard. Hierdurch ist eine einfache Integration von Applikationen in Jaeger möglich. Für selbst geschriebene Applikationen gibt es, ähnlich wie bei Prometheus, eine breite Unterstützung von Programmiersprachen und Frameworks. Weitere Vorteile von Jaeger, neben der großen Verbreitung, sind die einfache Installation und Skalierung selbst bei großen Datenmengen.
Komplexe Anforderungen - ConSol als starker Partner

Ihr Ansprechpartner
Christoph Ehlers