DEV Community

Uhltak Therestismysecret
Uhltak Therestismysecret

Posted on

Monitoring und Tracing im Zeitalter von Cloud und Microservices: Warum Log-Enzyme nicht reichen

Hook-Einleitung

Warum Monitoring und Tracing so wichtig sind

Wenn wir heute in der Cloud und mit Microservices arbeiten, haben wir es mit einer ganzen Reihe von Komplexitäten zu tun, die es uns erschweren, unsere Anwendungen und Systeme zu verstehen und zu verwalten. Eine zentrale Herausforderung ist die Beobachtung und Analyse von Systemverhalten, die ein wichtiger Baustein für die Gewährleistung der Verfügbarkeit, Leistungsfähigkeit und Sicherheit unserer Systeme ist. Hier kommt Monitoring und Tracing ins Spiel.

Einleitung

Was ist Monitoring und Tracing?

Monitoring ist ein Verfahren, das es ermöglicht, das Zustand einer Anwendung oder eines Systems zu überwachen und über die Erfüllung von Anforderungen zu informieren. Monitoring umfasst die Überwachung von Systemressourcen wie CPU-Auslastung, Speicherverbrauch, Netzwerklatenz usw. Ziel ist es, Störungen zu erkennen, bevor sie zu Ausfällen führen.

Tracing hingegen ist ein Verfahren, das es ermöglicht, die Durchgänge von Daten und Anfragen innerhalb eines Systems zu überwachen und zu verstehen, was passiert, wenn eine Anfrage erfolgt. Tracing hilft dabei, Ursächliche Beziehungen zwischen verschiedenen Komponenten des Systems zu erkennen und Prozesse zu optimieren.

H2-Abschnitte

Was sind die Merkmale von Log-Enzymen?

Log-Enzyme sind Tools, die den Log-Weg eines Systems überwachen und dabei Informationen wie Quelle, Ziel, Datensätze und Fehlermeldung sammeln. Typisch sind Log-Enzyme für einzelne Komponenten, meistens sind sie auf einer bestimmten Ebene oder einem bestimmten Ort installiert. Diese Art der Überwachung stellt jedoch ein Problem dar, da sie für die Komplexität der modernen Systeme nicht mehr ausreichen.

Zum Beispiel: Ein einfaches Logging-Tool

Zum Beispiel haben wir die Software syslog-ng. Sie sammelt Log-Einträge von verschiedenen Quellen und speichert sie in einer Datenbank. Es ist eine gute Sache, Log-Einträge zu sammeln. Aber es ist kein ausreichendes Monitoring-Tool für Komplexe System-Architekturen. Das liegt an der Beziehung zwischen den Quellen und den Log-Einträgen: Eine Log-Meldung besteht meist aus einer Mischung aus Informationen aus verschiedenen Quellen. Beispielsweise ist eine Web-Aufruf-Log-Meldung normalerweise mit einer Log-Schnittstelle von Java in Verbindung zu bringen, welche eine bestimmte Anwendung verwendet.

Was sind die Merkmale von Tracing-Tools und -Technologien?

Tracing-Tools und -Technologien wie OpenTracing und Jaeger (unter Befehlseifer von Uber, nun Apache) verfolgen den Anfrage-Weg und ermitteln jeden Schritt, bei dem der Datenfluss blockiert wird, oder wo der Zeitraum der Verarbeitung zu lang ist. Auch diese Werkzeuge zielen zuallererst darauf ab, einzelne Anfragen und durch sie verbundene Daten zu ermitteln. Die meisten dieser Werkzeuge müssen aber von Anwender-Seite konfiguriert werden, wozu normalerweise ein umfangreicher Aufwand und ein guter Fingerspitzengefühl erforderlich werden.

Ein Beispiel: Tracing im Kubernetes-Milieu

Beispielsweise verwenden wir Jaeger und OpenTracing in Kontext von Kubernetes. Jaeger ist eine leistungsfähige Tracing-Suite, die es möglich macht, Anfragen zu sammeln, zu sichtbar zu machen und zu analysieren. Es unterstützt verschiedenen Protokolle wie OpenTracing- jaeger-Thrift. Kubernetes unterstützt OpenTracing mittels einer eigenen SDK und bietet dadurch eine weitere Möglichkeit an, den Anfrage-Fluss durch die verschiedenen Komponenten des Kubernetes-Klusters zu ermitteln.

Beispiele - Vorteile von Tracing

Es ist jedoch wichtig, dass man die Beispiele aus dem Alltag nicht als die Anwendung im sicheren Raum sieht, sondern ganz im Gegenteil! Tracing ist nur dann sinnvoll eingesetzt, sobald es für kritische Aufgaben erforderlich wird, zu verstehen, was passiert, um kritische Einbrüche mit zugehöriger Beweis-Sammlung verhüten zu können. Es ist nur verstandenes Spiel, dass man mit ein bisschen Anstrengung selbst am Anfang, eine ganz wunderbare Anwendung entwickelt. Aber wenn die Anwendung ausgewachsen ist und noch weiter wächst, dann fehlt die Anreiz, es einfach nur nachzufahren, wenn bestimmte Datenflüssen nicht ausgelichtet werden können.

Anstrengung - Anreiz - Reife

Um eine Anwendung zu erstellen, muss man nur sich in dieser Phase Zeit nehmen, die erforderlichen Anstrengungen auf den Webserver und in der Konsole unterzubringen, die zur Anwendungspflege und zum Testen benötigt wird, nicht die, die sich aus der Lösung von Prozessen aus dem aktuellen Status der Anwendung ergeben und die die Zukunft der Anwendung gar nicht berühren.

Häufige Fehler

Beispiele - Fehlerhaftes Tracing-Verfahren

Ein Fehler beim Tracing ist der Missbrauch einzelner Beispiele aus dem Alltag. Beispielsweise haben wir einen Webshop, der häufige Anfragen zur Datenbank absetzen muss, kann man nicht einfach nur eine Log-Meldung erstellen, wenn die Datenbank überlastet wird, ohne sich im Detail zu beschäftigen, wie die Datenbank den Anfragen-Weg verfolgt, um zu verstehen, was schief geht.

Fazit und nächster Schritt

Ein guter Einstieg in die Welt von Monitoring und Tracing

Für die Zukunft ist klar, Tracing wird eine entscheidende Rolle spielen. Damit Monitoring und Tracing gut funktionieren, ist ein guter Einstieg in die beiden Technologien und Werkzeuge unerlässlich. Dazu gehört es, sich mit den wichtigsten Grundsätzen der beiden Technologien vertraut zu machen, wie Tracing und Monitoring funktionieren, und zu verstehen, welche Vorteile sie bieten.

Ein guter Einstieg besteht darin, nach den Grundsätzen einer Anwendung zu suchen. Wenn wir uns in eine neue Anwendung setzen, stellt sich uns ein Komplexitätsschwein entgegen, dass wir mit viel Mühe und Anstrengung erst begreifen können, um es schließlich zu bewältigen. Durch Tracing können wir auf die Frage antworten, wo die Anfrage-Wegen im Komplexitätsschwein blockiert sind.

Eine Möglichkeit zum Einstieg ist, eine Anwendung wie jaeger einzurichten. Es ist ein leistungsfähiger Tracing-Server, der uns die Überwachung des Anfrage-Weges und die Analyse von Daten ermöglicht. Ein weiterer guter Weg ist, Tracing-Tools in Kontext zu setzen. Dies kann ein komplexes Thema sein, aber es hilft uns ein bisschen durch die Schwierigkeiten im Einstieg.

Zur endgültigen Lösung fehlte schließlich auch noch der Reiz, die Anstrengungen auf sich zu nehmen und das System mit viel Arbeit vergrößern, aber dies ist nicht so. Mit genug Druck und genug Befriedigung zu einer guten Lösung sind die ersten Anstrengungen meist nicht nur über die ersten Schwierigkeiten, sondern auch über die Anstrengungen zum letzten Schritt hin, zu bewältigen.

Top comments (0)