alphaspirit - stock.adobe.com

Docker und Kubernetes Monitoring Tools für Microservices

Entwickler profitieren mehrfach von der Docker- und Kubernetes-Überwachung. In einigen Fällen reparieren Tools sogar fehlgeschlagene Implementierungen automatisch.

Container stellen die Werkzeuge zur Organisation und zum Aufbau von Microservices bereit. Sie beinhalten alles, was ein bestimmter Microservice zur Ausführung benötigt. Dazu gehören etwa Code, Laufzeit, Systemwerkzeuge, Systembibliotheken und Einstellungen.

Entsprechend haben sich Container heute weitgehend in der Entwicklung etabliert: Die Nutzung von Containern erlaubt es mehreren Teams, gleichzeitig an einzelnen Microservices zu arbeiten. Insbesondere Kubernetes ist weit verbreitet. Es hat sich schnell als de facto Standard für die Container-Orchestrierung etabliert und ermöglicht es Entwicklern, Anwendungen in jeder Umgebung zuverlässig einzusetzen.

Die Kubernetes-Plattform bietet ein hohes Maß an Portabilität, das dazu beiträgt, Skalierbarkeit, Zuverlässigkeit und Leistungsprobleme zu verringern. Im Allgemeinen begrenzen Container das Risiko von anspruchsvollen High-Level-Implementierungen, da sie die Software an einem Ort isolieren. Dennoch gibt es immer noch viele Möglichkeiten, wie Container-Deployments fehlschlagen können.

Die Wahl von geeigneten Docker und Kubernetes Monitoring Tools hilft, diese Probleme schnell zu lösen und unnötige Verzögerungen zu vermeiden. Solche Monitoring Tools unterstützen bei der Offenlegung von Problemen, die sich oft nicht in einem Diagramm erkennen lassen, zum Beispiel Quellcodereferenzen, Ausstattungsverifikationen oder SQL-Abfragen, die zu Transaktionsengpässen führen.

Entwickler profitieren in vielfacher Hinsicht von der Überwachung: So bekommen sie zum Beispiel Ereignisse auf Host-Ebene, auf Anwendungsebene oder an anderer Stelle im System zu sehen. In einigen Fällen reparieren bestimmte Monitoring Tools sogar fehlgeschlagene Implementierungen automatisch.

Insbesondere Entwicklungsteams können solche Tools nutzbringend einsetzen. Sie müssen heute typischerweise eine ganze Reihe von Dingen im Auge behalten, wie zum Beispiel Docker-Container, die jeweilige Cloud-Plattform, die Kubernetes-Orchestrierung und einzelne Services. Um solche komplexen Aufgaben zu bewältigen und die beste Lösung zu finden, sollten Teams Kombinationen von vorgefertigten Kubernetes- und wichtigen Docker Monitoring Tools untersuchen und bewerten.

Kubernetes und Docker Monitoring mit Open Source und kommerziellen Tools

Kubernetes ist eine attraktive Orchestrierungsplattform, da sie eine präzise Sprache verwendet. Dies sorgt für Konsistenz und vereinfacht die Kommunikation zwischen Entwicklern und dem operativen Betrieb. Mit Kubernetes können mehrere Dienste – und sogar Namensräume – über dieselbe physische Infrastruktur verteilt werden.

Jeder dieser Dienste befindet sich in Kubernetes Pods, die wiederum zahlreiche Container enthalten können. Aus diesem Grund kann es komplex werden, genau zu identifizieren, welche Container bestimmte Microservices unterstützen.

Entwicklungsteams benötigen sowohl eine infrastrukturbasierte als auch eine serviceorientierte Sichtweise. Das Kubernetes Monitoring kann wichtige infrastrukturelle Erkenntnisse und eine serviceorientierte Sichtweise liefern, um die Rolle eines einzelnen Containers oder einer Reihe von Containern genau zu identifizieren.

Entwicklungsteams sollten Kubernetes auch überwachen, um Umgebungsdaten für ihre Anwendungen zu erhalten. Dazu können fehlgeschlagene Starts oder Pod-Neustarts gehören, die anzeigen, wenn sich bestimmte Elemente geändert haben. Das Monitoring liefert auch Informationen über Latenzen bei Serviceanfragen und die Auslastung der Ressourcen pro Container.

Einige der grundlegenden Kubernetes-zentrierten Monitoring Tools können leicht mit ein paar Zeilen YAML konfiguriert werden. Andere benötigen wieder mehr Zeit und Aufwand für die Konfiguration.

Test auf Funktion und Bereitschaft

Um zu überprüfen, ob ein Container in einem Pod funktioniert und für den Traffic vorbereitet ist, bietet Kubernetes eine Reihe von Health Checks an. Diese Liveness- und Readiness-Tests ermöglichen eine Art automatisierter Selbstheilung. Der Zweck von Liveness-Tests ist es, anzuzeigen, dass eine Anwendung Ok ist und läuft.

Im Gegensatz dazu sind Readiness-Tests konzipiert, um zu prüfen, ob eine Anwendung für den Traffic vorbereitet ist. Die richtige Kombination aus Liveness- und Readiness-Tests ermöglicht es Entwicklern, Implementierungen ohne Ausfallzeiten auszuführen, die Bereitstellung von beschädigten Images zu verhindern und ausgefallene Container automatisch neu zu starten.

Die Verwendung dieser Tests zur Überwachung von Anwendungen sorgt für mehr Stabilität und Selbstheilung, wenn eine Anwendung nicht mehr reagiert.

cAdvisor

Das Open Source Tool CAdvisor funktioniert gut mit einem Host anderer Container-Laufzeiten. Es erkennt automatisch alle Container in einem bestimmten Knoten und sammelt grundlegende Ressourceninformationen. Dazu gehören CPU-Anteile, Speicher, Dateisystem und Netzwerknutzungsstatistiken.

Perfekt ist das Werkzeug allerdings nicht: Obwohl das Tool Echtzeitdaten sammelt, fehlt ihm die Speicherfähigkeit, die für eine langfristige Analyse erforderlich ist. Trotz dieses Mankos verwenden viele Systeme cAdvisor als Basistechnologie zur Erfassung von Metriken. Es stellt einen Remote REST-API-Endpunkt für die Analyse von Metriken bereit und bietet außerdem eine integrierte Webbenutzeroberfläche für die Visualisierung der Daten.

Heapster

Heapster ist eine Schlüsselkomponente des gesamten Kubernetes Monitorings und aggregiert Tracking und Ereignisdaten über einen Cluster hinweg. Das Werkzeug erfordert zwar einen hohen Konfigurationsaufwand, nutzt aber die Vorteile von Open Source in Bezug auf Flexibilität und Langlebigkeit. Zusammen mit Kubernetes bietet es detaillierte Trend- und Analysefunktionen.

Heapster sammelt nicht nur Leistungskennzahlen über Workloads, Pods und Container. Es liefert auch Informationen über Ereignisse und andere Signale, die von diesem Cluster erzeugt werden. Es gruppiert und benennt die Informationen nach dem Pod, was Analysen und Reviews im Vergleich zu anderen Tools erheblich erleichtert. Heapster unterstützt eine Reihe von verschiedenen Backends, darunter InfluxDB, Elasticsearch und Graphite.

Kubernetes Dashboard

Kubernetes Dashboard ist ein Web UI für den Zugriff auf Cluster-Informationen. Als solches zeigt das Kubernetes Dashboard alle laufenden Workloads an, so dass Entwickler Anwendungen aktiv verwalten und Fehler beheben können. Es bietet eine komplette Übersicht über alle laufenden Anwendungen. Entwickler können wählen, ob sie einzelne Ressourcen wie DaemonSets, Deployments oder Jobs ändern möchten.

In Kombination mit Heapster kann das Dashboard Protokolle für einzelne Pods bereitstellen und bietet so eine einheitliche Möglichkeit zur schnellen Datenvisualisierung. Die Veröffentlichung des Dashboards im Internet in frühen Versionen von Kubernetes führte zu einem viel beachteten Tesla-Sicherheitsverstoß. Anschließend wurde die Default-Konfiguration für die Installation des Dashboards in späteren Versionen gesperrt.

Sysdig Monitor

Sysdig ist ein einheitlicher Open-Source-Agent, der eine Service-Level-Sicht auf Metriken, Befehlsverläufe und Richtlinienverletzungen bietet. Er beinhaltet außerdem kommerziellen Support. In Zusammenarbeit mit dem Kubernetes DaemonSet stellt das Tool sicher, dass eine Instanz eines bestimmten Pod auf allen Knoten in einem Cluster ausgeführt wird. Sysdig kann in Container blicken, um eine stärker codezentrierte Sicht auf eine Anwendung zu ermöglichen. Sobald es konfiguriert ist, überwacht das Tool Anwendungen, auch wenn Kubernetes gerade dabei ist, Docker-Container zu skalieren. Das Tool fungiert als effektiver Unifier und bietet sowohl eine High-Level-Infrastrukturansicht als auch eine Kubernetes-orientierte Ansicht.

Im Jahr 2017 startete Sysdig seine Funktion zur Überprüfung von Anwendungen, mit der die Sysdig Cloud noch mehr Informationen aus Microservice-Infrastrukturen sammeln kann. Die vorinstallierten Plug-ins stimmen Anwendungen auf benutzerdefinierte Metriken ab, die dann über die Status- oder Verwaltungsseiten der Anwendung zur Überprüfung exportiert werden.

Prometheus

Prometheus ist ein mehrschichtiges Open Source Monitoring-System, das sowohl Kubernetes als auch Docker-Container überwachen kann. Das Tool taucht in Zeitreihenereignisse ein und verfügt über entsprechende Mechanismen, um diese Metriken für eine spätere Überprüfung zu speichern. Prometheus verfügt über eine ganze Reihe von Funktionen, darunter Dashboard-Visualisierung – das heißt Konsolenvorlagen – Zeitreihenspeicherung, Datenerfassung, Alerts und Ereignisverwaltung. Es ist über den Prometheus Data Exporter erweiterbar.

Die Komplexität der Konsolenvorlagen kann durch die Integration mit einem einfacheren Visualisierungs-Backend wie Grafana reduziert werden. Prometheus fungiert auch als zentraler Hub für die Erfassung von Metrikdaten, indem es eine Reihe von Drittanbieter-Tools unterstützt – darunter HAProxy, MySQL, Memcached, Redis und StatsD. Es verfügt über eine leicht verständliche Abfragesprache und ermöglicht es Entwicklern, die gleiche Sprache für Meldungen und Alarmmeldungen zu verwenden.

Retrace

Die genaue Ortung, wann und wo ein Anwendungsfehler aufgetreten ist oder weiterhin auftritt, bleibt eine zentrale Herausforderung in Microservices-Architekturen. Retrace ist ein unkompliziertes Cloud Tool, mit dem Benutzer erkennen können, welche Bereitstellung in welchem Microservice Fehler verursacht. Als Application-Performance-Management-Produkt für .NET- und Java-Anwendungen bietet es eine ganze Reihe nützlicher Funktionen. Dazu gehören zum Beispiel die Protokollierung von Methodenaufrufstapeln und Datenbankabfragen, die Verfolgung von Anfragen und die Überwachung von Fehlern und Protokollen.

Ein Tool wie Retrace kann Entwicklern helfen, schnell zu erkennen, welche Bereitstellung in welchem spezifischen Microservice den Fehler verursacht hat. Sobald Entwickler die Ursache identifiziert haben, ist das Zurückrollen oder Patchen schnell und einfach. Die neueste Version unterstützt die am häufigsten verwendeten Anwendungsserver und Frameworks im Java-Ökosystem, einschließlich Webservices und Datenspeicherung. Mit der integrierten Java-Unterstützung zeigt die Retrace-Konsole standardmäßig und automatisch Java-Frameworks an, wenn sie Teil einer Anwendung sind.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Mehr Kubernetes-Sicherheit zum Schutz für Cloud-Instanzen.

Amazon ECS und die Container-Orchestrierung mit Kubernetes oder AWS Blox.

Bestandteile und Vorteile der Container-Orchestrierung mit Google Kubernetes.

Erfahren Sie mehr über Cloud Computing