Blog Engineering Observability vs. Monitoring in DevOps
Aktualisiert am: October 16, 2024
8 Minuten Lesezeit

Observability vs. Monitoring in DevOps

Observability sammelt Daten, um Prozesse zu optimieren und Probleme zu beheben. Wir zeigen dir, wie das geht - und warum es dem Monitoring überlegen ist.

monitoring-update-feature-image.jpg

Logging und Monitoring sind feste Bestandteile moderner Software-Infrastrukturen. Die Einführung von syslog in den 1980ern markierte hierbei einen Wendepunkt. Ursprünglich für Unix-Systeme entwickelt, verdeutlichte syslog zwei zentrale Punkte: Wie wichtig es ist, sich einen Überblick darüber zu verschaffen, was genau in einem System geschieht – und dass es von Vorteil ist, diesen Kontrollmechanismus von der Grundfunktionalität des Systems zu trennen.

Die Vorzüge dieser erhöhten Sichtbarkeit waren offensichtlich. Trotzdem wurden Monitoring und Logging lange eher stiefmütterlich behandelt. So kam es immer wieder vor, dass Systeme eine Vielzahl von Einträgen produzierten, ohne dass diese aber jemals sinnvoll zusammengefasst oder analysiert wurden. Oder es wurden in der Vergangenheit Monitoring-Infrastrukturen geschaffen, die dann aber über ein Jahrzehnt lang verkümmerten, bis sie nicht mehr dem aktuellen Stand entsprachen.

Seitdem hat sich die operative Landschaft verändert. Observabilityist das Stichwort der Stunde. Für die Einschätzung der Application-Performance bietet Observability gegenüber Monitoring den großen Vorzug, dass Entwickler(innen) nun nicht mehr auf ihre eigenen Interpretationen oder statische Messungen angewiesen sind. Stattdessen ermöglicht das Konzept der Observability es ihnen, sich ein ganzheitliches Bild darüber zu machen, wie sich die Applikation verhält und vor allem, wie sich ihre Leistung für Anwender(innen) darstellt.

Was ist Observability?

Um die Bedeutung von Observability zu verstehen, hilft es, sich zunächst einen Überblick darüber zu verschaffen, was Monitoring ist, was es leisten kann und worin seine Beschränkungen liegen.

Auf der grundlegendsten Ebene werden beim Monitoring verschiedene Werte und Outputs eines gegebenen Systems oder Software-Stacks gemessen. Dazu gehören beispielsweise die CPU-Auslastung, RAM-Nutzung sowie die Reaktionszeit (Latenz). In dieser Hinsicht ähnelt das Monitoring klassischen Logging-Systemen, die statische Informationen über Ereignisse aus dem aktiven Betrieb des Systems liefern.

Die Messungen des Monitorings bieten in einem eingegrenzten Rahmen Hinweise auf systematische Probleme. Traditionelle DevOps-Monitoring-Tools erlauben es, die Daten zu aggregieren und miteinander zu korrelieren. Um aber holistische Aussagen treffen zu können, müssen diese Tools darüber hinaus üblicherweise noch manuell konfiguriert und angepasst werden. Statische Werte wie die CPU-Auslastung sind deswegen lediglich ein erster Schritt.

In seinem inzwischen berühmten SRE-Buch hat Google vier Kennzahlen - die sogenannten goldenen Signale - hervorgehoben, welche die Aussagekraft des Monitorings erhöhen sollen:

  • Latenz: Misst die Zeit, die benötigt wird, um eine Anfrage durchzuführen
  • Traffic: Misst die systemspezifische Nachfrage nach Leistungen auf höchster Ebene
  • Fehlerwahrscheinlichkeit: Misst die Rate, mit der Anfragen scheitern
  • Saturierung: Misst die Auslastung des Systems als das Verhältnis der Ressourcennutzung zu den verfügbaren Ressourcen insgesamt; üblicherweise liegt die Betonung hierbei auf knappen Ressourcen

Tatsächlich bieten diese goldenen Signale eine weitaus bessere Einschätzung der Systemleistung als die Kennziffern des konventionellen DevOps-Monitorings. Trotzdem muss um sie herum noch immer ein Monitoring-System entworfen, gebaut und in die bestehenden Abläufe integriert werden. Dies erfordert einen nicht zu unterschätzenden Aufwand. So müssen sämtliche potentiellen Fehler genau spezifiziert und händisch definiert und korrekt korreliert werden. Sogar in verhältnismäßig einfachen Fällen kann sich dies als sehr zeitintensiv erweisen.

Was also ist Observability?

Im direkten Vergleich Observability vs. Monitoring ist Observability intuitiver und vollständiger. Das manuelle Harmonisieren unterschiedlicher DevOps-Monitoring-Tools entfällt. Während ein aggregiertes Monitoring-Dashboard nur so gut ist wie die letzten Entwickler(innen), die daran gearbeitet hat, passt sich eine Observability-Plattform eigenständig an. So liefert Observability automatisch kritische Informationen im passenden Kontext. Dies kann sogar auf den Software-Entwicklungszyklus ausgedehnt werden (Software Development Life Cycle, SDLC). Dabei liefern die Observability-Tools, im Gegensatz zum DevOps-Monitorings, während der CI/CD-Runs wichtige Informationen, die Entwickler(innen) operative Rückmeldungen zu ihrem Code bieten.

Letzten Endes trägtObservability schlicht zu einer ganzheitlicheren Fehlerbeseitigung und einem holistischen Verständnis bei. Die Daten, die es produziert, lassen die „unbekannten Unbekannten” deutlicher hervortreten. So werden Produktionsprobleme erklärbarer. Im nächsten Abschnitt wollen wir verdeutlichen, warum genau dies so wertvoll ist. Anhand eines Beispiels werden wir Ihnen zeigen, warum Monitoring alleine oftmals nicht ausreicht - und welche Lücken durch Observability geschlossen werden.

Warum sich Observability auszahlt

Eine Priorisierung von Observability kann dazu beitragen, die Zeit zu reduzieren, die zur Lösung eines Problems benötigt wird (mean time to resolution, MTTR). Dadurch können Ausfälle zeitlich eingeschränkt werden, die Application-Performance verbessert sich und das Kundenerlebnis fällt positiver aus. Man könnte meinen, Monitoring biete sehr ähnliche Vorzüge. Die folgende Anekdote soll veranschaulichen, dass dies jedoch nicht immer der Fall ist.

Die Buchhaltung einer Engineering-Organisation gibt eine Warnung aus: Die Rechnungen für Cloud-Services steigen und sogar die Finanzleiterin hat ihre Sorge ausgedrückt. Entwickler(innen) haben bereits ebenso intensiv wie erfolglos das DevOps-Monitoring-System zu Rate gezogen: Alle Monitoring-Werte sind durchgehend im grünen Bereich, darunter der Speicher, die CPU-Auslastung sowie disk I/O. Wie sich herausstellt, lag die Ursache in einer anderen „unbekannten Unbekannten”: Eine erhöhte DNS-Latenz in den CI/CD-Pipelines führte zu einer erhöhten Ausfallrate in den Builds. Weil für jeden Build nun mehr Versuche benötigt wurden, kam es unweigerlich zu einer höheren Beanspruchung der Cloud-Ressourcen. Allerdings war jeder einzelne Versuch für sich verhältnismäßig kurz und fiel im Monitoring-System nicht auf. Durch die Einführung von DevOps-Observability-Tools konnte Ops eine weitaus breitere Palette an Ereignissen sammeln, das Problem damit einkreisen und es schließlich beheben. Dies wäre in einem traditionellen Monitoring-System nicht möglich gewesen. Hier hätte die Organisation selbst auf das DNS-Latenz-Problem schließen müssen.

Auch für nichttechnische Stakeholder(innen) und Geschäftseinheiten erweist sich Observability als wichtig. Da Technologie zunehmend zu einem Profitfaktor wird, tragen die wirtschaftlichen Kennzahlen der Softwarestruktur unmittelbar zum gesamten Unternehmenserfolg bei. Observability bietet einen klaren Blick auf diese Kennzahlen und kann von verschiedenen Teams individuell genutzt werden.

Ohne eine positive Nutzererfahrung (User Experience, UX) sind moderne Software und Applikationen nicht möglich. Wie das Beispiel illustriert, reichen die statischen Kennziffern des Monitorings nicht aus. Unter einer scheinbar unauffälligen Oberfläche können sich schwerwiegende Probleme verbergen.

Zentrale Observability-Kennzahlen

Für Organisationen, die sich dafür entschieden haben, DevOps-Observability-Tools zu verwenden, besteht der erste Schritt darin, die wichtigsten Ziele zu identifizieren und die besten Umsetzungsoptionen festzulegen.

Wir empfehlen, mit den drei grundlegenden Säulen der Observability anzufangen:

  • Logs: Informationen und Ereignisse
  • Kennziffern (metrics): Messungen spezifischer Kennziffern und Performance-Daten
  • Tracing: Die lückenlose Dokumentation einer Anfrage und ihrer Performance

Wer sein Observability-System auf diesen drei Säulen aufbaut, muss mit einem hohen Aufwand rechnen. Projekte wie OpenTelemetry tragen aber erheblich zur Realisierbarkeit bei. Sie begünstigen die Akzeptanz industrieweiter Standards für Logging, Kennzahlen und Tracing und schaffen die Bedingungen für ein in sich stimmiges Ökosystem. Das verkürzt für alle Unternehmen, die DevOps-Observability-Tools umzusetzen gedenken, die auf OpenTelemetry-Standards basieren, die Zeit von der Einführung bis zur Profitabilität.

Auch bei GitLab ist Observability ein zentraler Aspekt unseres Produkts, damit du Fehler und Engpässe so früh wie möglich erkennst und im laufenden Betrieb Anpassungen vornehmen kannst. Wenn du näher interessiert bist, besteht die Möglichkeit, die neue GitLab-Observability-Suite zu testen. Melde dich dazu als Beta-Tester(in) an.

Als weitere Observability-Daten und -Säulen sind darüber hinaus zu nennen:

  • Das Tracking von Fehlern: Feinmaschigere (granulare) Logs mit Aggregation
  • Kontinuierliches Profiling: Auswertung der granularen Code-Performance
  • Real User Monitoring: Beurteilung der Application-Performance anhand echter Nutzer(innen)

Wenn wir uns diese Säulen ansehen, wird ein gemeinsames Prinzip erkennbar. Es reicht nicht mehr aus, sich bei der Analyse moderner, distribuierter Systeme auf einen sehr kurzen Zeitraum zu beschränken. Vielmehr ist eine holistische Betrachtung aus der Vogelperspektive erforderlich. Ein tiefes Verständnis der Application-Performance mittels Observability statt Monitoring beginnt damit, Ereignisse aus der erlebten Perspektive der Kundinnen und Kunden zu betrachten und anschließend die vollständige Performance und die Interaktion mit ihrer Software zu überwachen. Darin liegt der Hauptgrund, warum Observability im direkten Vergleich mit dem Monitoring die Oberhand behält.

Observability erlaubt es einer Engineering-Organisation, über das konventionelle Monitoring hinaus die betriebliche Exzellenz zu verbessern. Letzten Endes ergeben sich die wertvollsten Warnsysteme und Problembehebungs-Programme aus schmerzhaft erlittenen Ausfällen. Hier bietet das sogenannte Chaos-Engineering eine Möglichkeit, Beobachtbarkeirs-Plattformen zu Testzwecken zu nutzen. Dabei werden die Konsequenzen echter Ausfälle in einer kontrollierten Umgebung und mit bekannten Ergebnissen geprüft. Wenn du vermutest, dass dein System „unbekannte Unbekannte” enthalten könnte, bietet Chaos-Engineering für deine CI/CD-Pipelines, Supply-Chain und DNS signifikante Zugewinne, was die operative Basis anbelangt.

Observability ist ein zentraler Teil von DevOps

Observability ist nicht nur für DevOps von zentraler Bedeutung, sondern für die gesamte Organisation. Indem du die statischen Daten überholter Monitoring-Lösungen ersetzt, erreichst du durch die Einführung von Observability einen 360-Grad-Blick auf deine Applikations-Infrastruktur.

DevOps-Teams sollten eng mit Stakeholdern zusammenarbeiten, um ihre Observability-Kennziffern so miteinander zu teilen, dass sie der Organisation als Ganzes dienen und gemeinsam an ihrer Umsetzung arbeiten. Es kann für eine höhere Effektivität von Vorteil sein, sich die Vorteile der Apps-Instrumentierung zu verdeutlichen und diese Vorteile anschließend dem Entwicklungs-Team nahezulegen. DevOps-Teams können dazu beitragen, die Grundursachen von Produktionsproblemen schneller zu erkennen: gut eingesetzter Applikations-Code macht es zudem einfacher, diese von Ursachen zu unterscheiden, die auf der Infrastruktur beruhen. Je früher Observability in der CI/CD-Pipeline zur Anwendung kommt, umso größer ist die Wahrscheinlichkeit, dass SLO-Deltas erkannt werden, bevor das Produkt veröffentlicht wird.

DevOps-Teams, die sowohl die Applikations-Performance als auch Geschäftswerte signifikant verbessern möchten, erhalten durch Observability die Möglichkeit, beide Aspekte gleichzeitig zu optimieren.

Wir möchten gern von dir hören

Hat dir dieser Blogbeitrag gefallen oder hast du Fragen oder Feedback? Erstelle ein neues Diskussionsthema im GitLab Community-Forum und tausche deine Eindrücke aus. Teile dein Feedback

Bist du bereit?

Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.

Kostenlose Testversion anfordern

Finde heraus, welcher Tarif für dein Team am besten geeignet ist

Erfahre mehr über die Preise

Erfahre mehr darüber, was GitLab für dein Team tun kann

Sprich mit einem Experten/einer Expertin