Letzte Woche wurde Prometheus 1.0 veröffentlicht. Darin enthalten ist ein stabiles API und ein User Interface. Kurz gesagt: „Mit Prometheus 1.0 werden Programme, die auf dem Prometheus-API basieren, bei Upgrades nicht länger beschädigt und Updates benötigen keine Storage-Reinitialisierung oder Deployment-Änderungen mehr.“ Björn Rabenstein ist sowohl Entwickler bei SoundCloud als auch Core Developer von Prometheus und im Interview mit JAXenter erzählt er, welche Neuerungen und Verbesserungen das Release mit sich bringt.

JAXenter: Welche Probleme werden von Prometheus 1.0 gelöst?

Björn Rabenstein: Es kann vielerlei Probleme lösen, immer abhängig vom jeweiligen Use Case. Jamie Wilkinson hat ein regelmäßig auftretendes Problem in Googles Site Reliability Engineering-Buch (O’Reilly 2016) perfekt beschrieben: „Wir brauchen Monitoring-Systeme, die bei hochabstrakten Service-Objektiven Alarm schlagen können, aber gleichzeitig die Feingliedrigkeit besitzen, um weiterhin individuelle Komponenten inspizieren zu können.“

JAXenter: Worin bestehen die hauptsächlichen Vorteile?

Björn Rabenstein: Wie im Beitrag der Cloud Native Computing Foundation bereits erwähnt wurde, gibt es drei Gruppen, die auf verschiedene Weise von der Prometheus-Software profitieren werden – besonders hinsichtlich des Monitorings und der Analyse von Cloud-nativen Architekturen und Daten von sogenannten Time Series:

Cloud-Entwickler : Wegen der einfachen Instrumentierung des Codes, die nicht nur in der Produktion, sondern auch während der Entwicklung helfen wird, Performance-Probleme und andere Unregelmäßigkeiten zu identifizieren. Die Performance des Kubernetes-Schedulers hat sich durch das Debuggen unter Verwendung von Prometheus verzehnfacht. Außerdem wird man von Prometheus nicht mehr eingeschlossen, da es mehrere Integrationspunkte mit anderen Systemen gibt.

: Wegen der einfachen Instrumentierung des Codes, die nicht nur in der Produktion, sondern auch während der Entwicklung helfen wird, Performance-Probleme und andere Unregelmäßigkeiten zu identifizieren. Die Performance des Kubernetes-Schedulers hat sich durch das Debuggen unter Verwendung von Prometheus verzehnfacht. Außerdem wird man von Prometheus nicht mehr eingeschlossen, da es mehrere Integrationspunkte mit anderen Systemen gibt. DevOps : Endlich lässt sich genau die Alerting-Funktion implementieren, die man gerne hätte und es lassen sich nun alle Fragen stellen, auf die man schon immer Antworten brauchte.

: Endlich lässt sich genau die Alerting-Funktion implementieren, die man gerne hätte und es lassen sich nun alle Fragen stellen, auf die man schon immer Antworten brauchte. Endnutzer: User können sich vor allem auf Prometheus’ höhere Verlässlichkeit und bessere Performance freuen. Als erstes Unternehmen, das Prometheus nutzen konnte, war SoundCloud dazu in Lage, Outages besser zu bemerken und zu handhaben als vorher. Das hat die Verfügbarkeit der Seite erheblich gesteigert.

JAXenter: Was bedeutet Prometheus 1.0 für dich persönlich?

Björn Rabenstein: Die schrittweisen Änderungen zwischen dem vorherigen Release 0.20 und der aktuellen Version 1.0 sind vergleichsweise klein gewesen. Die wichtigste Änderung für uns als Entwickler besteht in den Stabilitätsgarantien, die wir jetzt zusichern. Siehe dazu unseren Blog-Post. Natürlich haben wir dafür keinen zufälligen Zeitpunkt gewählt. Wir haben gewartet, bis wir darauf vertrauen konnten, dass die zentralen Teile, wie etwa die Query-Sprache PromQL und die wichtigsten APIs, stabil genug sind – von der Darstellung bis zur Alarmierung hinauf. Diesen Status erreicht zu haben, macht mich wirklich glücklich.

JAXenter: Was bedeutet Prometheus für SoundCloud?

Björn Rabenstein: Für SoundCloud hat sich das Monitoring-Tool voll und ganz ausgezahlt. Das gilt sowohl hinsichtlich der neuen Möglichkeiten (eine sehr komplexe Seite zuverlässig zu betreiben) als auch der Ersparnisse (weniger operationaler Aufwand beim Aufsetzen und Betreiben des Monitorings sowie beim Aufspüren und Untersuchen von Ausfällen; weniger Geld bezahlt an externe Monitoring-Anbieter), die wir Prometheus verdanken. Nicht zu vergessen die etwas entfernteren Vorteile, wie etwa Tech-Credibility. Aber als wir mit dem Projekt begonnen haben, war dieser Erfolg in keinster Weise abzusehen. Wir haben viel investiert, bedenkt man die Größe und die verfügbaren Ressourcen der Firma. Ich selbst kam erst ein Jahr nachdem die Entscheidung, in Prometheus zu investieren, gefällt war, dazu. Ich mache gerne den Witz, dass ich das Projekt wohl abgewiesen hätte, wenn ich damals die Verantwortung getragen hätte. Manchmal muss man einfach etwas wagen, aber das ist natürlich nun, woe klar ist, dass man alles richtig gemacht hat, einfach gesagt.

JAXenter: Was haben Prometheus und Kubernetes gemeinsam?

Björn Rabenstein: Prometheus und Kubernetes haben dieselben geistigen Vorfahren: Kubernetes wurde inspiriert durch Borg (Googles interne Cluster-Management-Lösung), Prometheus hingegen durch Borgmon (Googles internes Monitoring-System). Obwohl beide Systeme unabhängig voneinander und unter sehr unterschiedlichen Umständen entwickelt wurden, teilen sie doch ähnliche Vorstellungen, wie ein großflächiges Produktionssystem betrieben werden sollte (Vorstellungen übrigens, die gerade in dem oben schon zitierten, hervorragenden Buch „Site Reliability Engineering – How Google Runs Production Systems“ festgehalten wurden). Beide sind Nachfolgesysteme, die versuchen, von ihren Vorfahren zu lernen.

Die auffälligste Sache, die beide Systeme gemeinsam haben, ist die Idee der Labels. In Kubernetes wird alles gelabelt und Selektionen können anhand von beliebigen Label-Dimensionen erfolgen. Bei Prometheus läuft es ganz ähnlich. Dort werden die Time Series gelabelt, wobei in Prometheus alles eine Time Series oder eine Aktion auf einer solchen ist, inklusive der Alarmsignale. Kubernetes’ Labels lassen sich ganz einfach in Prometheus-Labels übersetzen. Falls nötig, pflanzen sie sich durch das ganze Stack fort. Die Seite, die man auf seinem Smartphone empfängt, kann gut und gerne ein Label beinhalten, dass zur Start-up-Zeit einem Container zugewiesen wurde.

Die wichtigsten Integrationspunkte bestehen allerdings darin, dass Prometheus den Service Discovery-Mechanismus von Kubernetes unterstützt und seine Metriken für Kubernetes-Komponenten (etwa den API-Server oder das Kuberlet) zugänglich macht. Dergestalt kann man Prometheus nutzen, um Kubernetes-Services und sogar Kubernetes selbst zu überwachen. Es ist zudem sogar möglich, Prometheus über Kubernetes laufen zu lassen.

JAXenter: Was steht für Prometheus als nächstes an?

Björn Rabenstein: Ich persönlich freue mich am meisten auf den bald erscheinenden Alert-Manager. Damit vervollständigt sich Prometheus‘ Konzept, äußerst robustes HA hinsichtlich Monitoring und Alerting zu bieten.

Die Community dagegen erwartet mit Spannung ein verteiltes, langfristiges Aufbewahrungssystem für Time Series. Hier sind mehrere Projekte in Arbeit, es lohnt sich also, dranzubleiben und auf die in naher Zukunft erscheinenden Resultate zu warten.

Vielen Dank für das Interview!