Observability, Monitoring & Alerting mit Kubernetes

In einer Welt, in der Anwendungen immer komplexer und dezentraler werden, hat sich Kubernetes zur führenden Software für Container-Orchestrierung entwickelt. Automatisierung, Ressourcenoptimierung, Hochverfügbarkeit und Skalierbarkeit sind nur einige der vielen Vorteile, die durch die Open-Source-Plattform entstehen. Kurz: Kubernetes ist das ideale Werkzeug, um Software auf verteilten Systemen in einem produktiven Szenario zu betreiben. Doch damit steigt die Komplexität und viele Unternehmen stoßen daher beim Deployment von Kubernetes Applikationen auf Hürden. Heute beschäftigen wir uns mit den unverzichtbaren Bestandteilen von Kubernetes Anwendungen: Observability, Monitoring & Alerting.

Observability vs. Monitoring: Wo liegt der Unterschied?

Observability und Monitoring sind zwei verwandte Konzepte, die oft im Zusammenhang mit der Überwachung von Anwendungen und Systemen verwendet werden. Obwohl sie ähnlich klingen, gibt es einen wichtigen Unterschied.

 

  • Monitoring bezieht sich auf die Überwachung von Anwendungen und Systemen, um sicherzustellen, dass diese ordnungsgemäß funktionieren und um potenzielle Probleme zu erkennen, bevor sie zu größeren Problemen führen. Es geht dabei um das Sammeln von Daten und Metriken, die helfen, den Zustand eines Systems zu überwachen und zu analysieren.
  • Observability hingegen bezieht sich auf die Fähigkeit, den internen Zustand eines Systems aus externen Signalen zu verstehen. Es geht dabei um die Fähigkeit, komplexe, verteilte Systeme zu verstehen, indem man Logs, Traces und Metriken sammelt, die aus verschiedenen Teilen des Systems stammen.

Ein beliebtes Sinnbild für diese beiden Konzepte ist der Eisberg. Dieser wird oft herangezogen, um zu verdeutlichen, dass ein Großteil des Systems unter der Oberfläche verborgen ist und schwer zu erkennen sein kann. Wie bei einem Eisberg können auch bei einem komplexen System nur einige Oberflächendaten und Metriken sichtbar sein, während der Großteil der Informationen unbeobachtet bleibt. Monitoring kann zwar helfen, Probleme zu entdecken, ohne den vollständigen Kontext und den internen Zustand des Systems wird es jedoch schwierig, die eigentliche Ursache zu finden. Observability bietet eine tiefere Einblick in den internen Zustand des Systems und ermöglicht es, schnell auf Probleme zu reagieren und sie zu beheben, bevor sie größere Auswirkungen haben.

Monitoring vs Observablity Eisberg

Die fehlende Komponente im Dreiergespann: Das Alerting

Alerting ist ein wichtiger Bestandteil von Monitoring und Observability und beschreibt die Benachrichtigung von DevOps oder anderen verantwortlichen IT Teams, sobald ein bestimmtes Ereignis oder eine bestimmte Bedingung in einem System auftritt.

Im Kontext von Monitoring wird Alerting verwendet, um Benachrichtigungen zu senden, wenn Metriken bestimmte Schwellenwerte überschreiten oder bestimmte Ereignisse oder Fehler im System auftreten. Idealerweise lassen sich damit auch unterschiedliche Alarm-Artenund Kritikalitäten granular steuern.

 

In der Observability ist Alerting ebenfalls wichtig, um auf komplexe Ereignisse im System aufmerksam zu machen, die allein anhand von einfachen Metriken oder Daten zu erkennen sind. Zum Beispiel können komplexe Systeme mehrere Signale, Ereignisse oder Fehlerquellen haben, die in Zusammenhang stehen und ganzheitlich interpretiert werden müssen, um ein vollständiges Verständnis des Systems zu erhalten. Mit Hilfe von Alerting wird die Bedeutung dieser Signale und Ereignisse kommuniziert.

Die Praxis: Observability, Monitoring & Alerting Tools

Wir haben die Wichtigkeit von Observability, Monitoring & Alerting für unsere Anwendungen kennen gelernt. Kubernetes bietet verschiedene Tools und Technologien zur Implementierung und Umsetzung dieser drei Konzepte:

ToolBeschreibungKategorie
PrometheusPrometheus ist ein Open-Source-Toolkit, das speziell für die Überwachung von Kubernetes-Anwendungen entwickelt wurde. Es kann Metriken von verschiedenen Quellen sammeln, wie z. B. Kubernetes-Pods, Docker-Container, Hosts und Anwendungen. Prometheus ist in der Lage, Alarme auszulösen, wenn bestimmte Schwellenwerte überschritten werden oder wenn bestimmte Ereignisse auftreten. Zudem dient es als eine Art Zentrale eines Monitoring Setups.Monitoring & Alerting
syseleven-blog-grafana-logoGrafana ist eine plattformübergreifende Open-Source-Anwendung für Datenvisualisierung und Dashboarding. Die Integration findet mit verschiedenen Datenquellen, z. B. Prometheus, PostgreSQL, InfluxDB oder ElasticSearch statt. Mit Grafana können Metriken in Echtzeit visualisiert sowie Alarme ausgelöst werden. Observability, Monitoring & Alerting
syseleven-blog-loki-promtail-logoLoki ist ein Open-Source-Toolkit für das zentrale Logging und Aggregation, das speziell für die Verwendung mit Kubernetes entwickelt wurde. Es ermöglicht die Speicherung und Abfrage von Logs von verschiedenen Quellen, einschließlich Kubernetes-Pods, Docker-Containern und Hosts. Promtail ist ein Client für Loki, der für die Sammlung von Logs in Echtzeit und die Weiterleitung an Loki verantwortlich ist. Zusammen bieten Loki und Promtail eine leistungsstarke Lösung für das zentrale Logging und die Analyse von Logs in Kubernetes-Anwendungen.Observability/Logging
syseleven-blog-fleuntd-logoFluentd ist ein Open-Source-Softwareprojekt für das zentrale Logging und Aggregation. Es kann verwendet werden, um Logs von verschiedenen Quellen, einschließlich Kubernetes-Pods und Docker-Containern, zu sammeln und zu aggregieren. Fluentd kann auch mit anderen Tools wie Elasticsearch und Kibana integriert werden, um eine bessere Datenanalyse zu ermöglichen.Observability/Logging
syseleven-blog-jaeger-logoJaeger ist eine Open-Source-Software für die verteilte Tracing-Analyse und wird für das Monitoring und die Fehlerbehebung in komplexen Microservice-Umgebungen eingesetzt. Es kann verwendet werden, um die Ausführungspfade von Anforderungen in einer verteilten Anwendung zu verfolgen. Dies kann dazu beitragen, Engpässe und Latenzprobleme in einer Anwendung zu erkennen und zu beheben.Observability/Logging

Es wird deutlich, dass Observability, Monitoring und Alerting in Kubernetes-Anwendungen unverzichtbar sind, um Health- und Performance-Checks in Anwendungen durchzuführen. Die Implementierung von Tools wie Prometheus, Grafana, Loki/Promtail, Jaeger und Fluentd gewährleistet eine umfassende Überwachung und Analyse von Metriken, Logs und Traces. So können Probleme schnell erkannt und behoben werden. Observability, Monitoring und Alerting bieten viele Möglichkeiten, mehr über die Applikationen in einem Kubernetes Cluster zu erfahren und den reibungslosen Betrieb sicherzustellen.

Kubernetes Deep Dive-Workshop “Observability, Monitoring & Alerting”

Wir haben einen 1-tägigen Workshop ins Leben gerufen, um das Thema noch ausführlicher zu beleuchten. In unserem Deep Dive Workshop “Observability, Monitoring & Alerting” am 29. Juni 2023 erhältst Du einen tieferen Einblick in die einzelnen Komponenten von Kube-Prometheus-Stack und Loki/Promtail. Zudem vermitteln wir anhand von Praxisbeispielen die Konfiguration eines ServiceMesh mit Linkerd. Eine Mischung aus Theorie, praktischen Beispielen und Übungsaufgaben inkl. Testumgebung erwartet Dich. Melde Dich direkt hier für den Workshop an.

Share: