12. Juni 2019

Säulen der effektiven Überwachung in einer Cloud Native Welt (Teil 2)

Säulen der effektiven Überwachung in einer Cloud Native Welt (Teil 2) (Titima Ongkantong / shutterstock.com)

Der erste Artikel zum Thema Monitoring in einer auf Microservices basierenden Umgebung hat bereits zwei der vier Überwachungsansätze, die in solchen Umgebungen verwendet werden, vorgestellt – das Black Box Monitoring und das White Box Monitoring. Bleiben noch die Säulen Zentralisierte Protokollierung und Request Tracing, die im Folgenden näher erläutert werden.

Die zentralisierte Protokollierung: Wertvolle Debugging Daten frei Haus

Das Thema der zentralisierten Protokollierung/ Logging ist kein neues. Schon vor über 20 Jahren gehörten Logmechanismen wie sysLog zum Standard. Warum also näher auf diesen alten Hut eingehen?

Cloud Native Anwendungen (Microservices/PODS) sind stateless und idempotent. Das bedeutet: keine Persistierung (State) von Daten – also auch keine Log Daten – innerhalb eines Microservices, und: „Container sterben“, wenn der Kubernetes® Controller dies benötigt. Danach entstehen sie, wie ein Phönix aus der Asche, vollkommen neu und haben eine neue Identität. Da Container und Server mit nativer Cloud Infrastruktur kurzlebig sind, kommt dem zentralen Logging eine hohe Bedeutung zu. Ob splunk, ELK oder der CANCOM Log Service auf Basis von GrayLog – es wird ein zentrales Logging mit Skalierfähigkeit benötigt. Der typische Cloud Ansatz: Starte klein und skaliere bei Bedarf.

Der Benefit einer zentralen Auswertung ist, dass sich alle System- und Anwendungsprotokolle an einem Ort befinden und so einfach und beliebig in Relation gesetzt werden können. Dies kann eine sehr leistungsstarke Lösung sein. Darüber hinaus können kritische Logmeldungen gefiltert, dem zentralen Alarmierungsstream zugeführt und so ein Event im zentralen Vorfallmanagement ausgelöst werden.

Das Request Tracing: Durchgängige Sichtbarkeit einer Benutzeranfrage

Bei komplexen Anwendungen lösen Anfragen oft eine Reihe von zusätzlichen Requests zur Unterstützung aus. Wenn man sich eine einzelne Anfrage ansieht, benötigt man zu einer genauen Analyse jedoch trotzdem eine einfache und umfassende Sicht auf alle am Gesamtprozess beteiligten Teilprozesse. In monolithischen Anwendungen war dies einfach, da ein Request einen Applikationsserver in der Regel nicht verließ. Bei Microservices ist es anders: Ein Request durchläuft mehrere PODS und sogar Träger. Herkömmliche Überwachungslösungen haben keine Möglichkeit diese Informationen zu aggregieren. Auch ein zentrales Logging bietet ohne den Bezug auf genau einen User Request keinen Ansatz.

Dies führt zu einer neuen Form der Überwachung, dem Request Tracing. Hierbei wird ein Benutzer-Request mit einer eindeutigen ID versehen, die durch alle Bearbeitungsstufen mitgenommen wird und so eine eindeutige Identifizierung der Requests ermöglicht. So werden Microservices transparent. Open Source Tools, die sich auf die Verfolgung von Anfragen konzentrieren, gibt es mehrere. Jaeger und Zipkin sind im Microservice Umfeld aber die de facto Standards und unerlässlich, um Engpässe in Ihren Anwendungen zu diagnostizieren.

Umfassende Überwachung lohnt sich

Es gab einige wesentliche Fortschritte in der Überwachungstechnologie, die uns helfen, unsere Systeme in einer nativen Cloud Welt besser zu verstehen. Mit der Entwicklung der Systemarchitektur müssen auch Überwachungsstrategien konzipiert werden. Open Source Tools wie Jaeger und Prometheus können eine nützliche Ergänzung zu traditionellen Überwachungslösungen darstellen, wobei alle Komponenten zusammenarbeiten, um einen kohärenten Ansatz für das Monitoring zu bieten. Mit umfassender Überwachung kommen bessere und zuverlässigere Systeme. Es ist eine Investition, die sich lohnt.

(Volker Müller)

Keine Kommentare