Starten Sie ihr Softwareprojekt mit Smartsquare
linkedin github
We're hiring!

Spring Applikationen mit Micrometer und Prometheus überwachen

20. Januar 2020 | 11:01 Uhr Von: Ellen Strerath

Bild zum Artikel

Am 8. Januar 2020 fand bei uns wieder eines der beliebten Java User Group Meetups Bielefeld statt. Jens Krafczyk aus unserem Smartsquare Team referierte zu dem Thema Spring Applikationen mit Micrometer und Prometheus überwachen.

Das Format ist von Euch wieder einmal super aufgenommen worden und Jens erhielt für seinen Vortrag viel Beifall – an dieser Stelle möchten wir uns noch einmal bei allen Teilnehmern bedanken!

Nach einem lockeren Zusammenfinden bei Pizza, Coke und Kicker, verfolgte ein Publikum von knapp 30 interessierten Zuhörern den Vortrag von Jens. Im angeschlossenen Q&A gab es, wie bereits während des Vortrags, viele interessierte Nachfragen. Im Folgenden haben wir für Euch eine Rückschau zusammengestellt.

Impressionen

Monitoring für einen reibungslosen Betrieb und besseren Kundenservice


Ein funktionierendes Monitoring ist der Schlüssel zu einem besseren Kundenservice und reibungsloseren Betrieb - und zwar sehr schnell und extrem flexibel.

Die Sicherung und Optimierung der Service-Qualität und die Erfüllung der Kundenbedürfnisse sind zentrale Säulen eines Unternehmens, die maßgeblich zu mehr Transaktionen und damit verbunden zu mehr Umsatz führen. Dabei reicht es nicht aus das Monitoring als ein Kontrollinstrument zu betrachten, das lediglich Rückschlüsse über die Onlinezeit einer Anwendung gibt. Das ein System eine Onlinezeit von 99,8% erreicht mag sich erstmal gut anhören. Schaut man jedoch genauer hin kann sich herausstellen, dass die Performance, also beispielsweise die Antwortzeit oder der Durchsatz von Daten, aus bestimmten Gründen nicht ausreicht. Muss der Kunde zu lange warten, wird er kein zufriedenstellendes Nutzererlebnis haben und nicht wiederkehren. Wichtig ist es auch zu wissen, was für Ursachen hinter den verbleibenden 0,2% der Stillstände und Fehler im System stehen und welche Transaktionen betroffen sind. Erst mit diesen Informationen lassen sich Aufwand, Kosten und Nutzen einer Modifizierung evaluieren.

Gründe für Monitoring

Die Informationen darüber was genau und wie es genutzt wird sind wichtige Informationen, um Kundenbedürfnisse besser zu verstehen und gezielt erfüllen zu können. Das Monitoring schnell umgesetzt werden kann und vergleichsweise günstig ist, und somit in der Kosten/Nutzen-Rechnung auf ganzer Linie überzeugt, hat Jens uns in seinem Vortrag demonstriert.

Grafana, eines der von ihm vorgestellten Tools, kann aber auch für Nicht-Techies interessant sein, da es echten Business Value bietet. Zum Beispiel während eines Design-Sprints oder einer Prototyping Phase. Gesammelte Daten müssen dann nicht erst durch eine eigene Schnittstelle bereitgestellt und in der Oberfläche aufwendig aufbereitet werden, sondern können durch das Zusammenklicken von Diagrammen schnell visualisiert werden. Dadurch werden Fehlentscheidungen vermieden und es können in der entscheidenden Phase Zeit und Geld eingespart werden.

Und auch Entwickler, die bei dem Thema Application Performance Monitoring bis jetzt dachten, dass das Monitoring nebensächlich oder schlicht nicht Ihre Aufgabe sei, werden feststellen, dass die Laufzeitanalyse ein wichtiges Hilfsmittel ist, um mittels Health Checks und Metriken Performanceprobleme zu erkennen und Fehler zu identifizieren.

Und das beste an der Sache ist: Es bedarf nur wenig Konfiguration, um schnell und einfach die gewünschten Infos zu erhalten! In einem unserer aktuellen Projekte mit etwa 100.000 Zeilen Code macht das Monitoring gerade einmal 50 Zeilen aus. Wie Ihr Eure Server und Webanwendungen einfach und schnell überwachen könnt, hat Jens in seinem Vortrag Schritt für Schritt anhand einer Demo-Applikation vorgestellt.

System-Struktur

Metriken abfragen mit Micrometer

Dazu verwendete er Micrometer, eine Bibliothek die man in eine Anwendung einbauen kann, um Informationen in Form von Metriken zur Verfügung zu stellen.

Software Metriken sind Funktionen, die Eigenschaften von Software als Zahlenwert abbilden. Hierdurch werden formale Vergleichs- und Bewertungsmöglichkeiten geschaffen, die Auskünfte zum Speicherbedarf, der Reaktionszeit der Anwendung und vielem mehr geben können.

Bei uns ist Micrometer aktuell im Einsatz, um in einem Projekt Zahlen über ausgehende Rechnungen zu erfassen und diese beispielsweise nach Firma oder Land auszuwerten. Dabei kommt Micrometer sowohl im Endkundengeschäft als auch im B2B-Bereich zur Anwendung.

Mit Hilfe so genannter Health Checks lässt sich auf einen Blick der Status einer Anwendung erkennen. Im Fall eines Fehlers kann so auf einen Blick erkannt werden, wo dieser entstanden sein muss. Mit Fehlern sind hierbei keine fehlerhaften Eingaben gemeint, sondern Probleme mit externen Ressourcen der Anwendung. Darunter fallen Hardwarekomponenten wie die Festplatte und der Arbeitsspeicher oder die Verbindung zu externen Systemen wie Datenbanken oder anderen Anwendungen.

Der Gesamtzustand einer Anwendung ergibt sich aus einer Vielzahl einzelner Health Checks. In der sogenannten Registry werden alle Health Checks der Anwendung registriert. Danach führt diese alle Health Checks aus und leitet aus diesen Teilergebnissen einen Gesamtzustand ab.

Hier ist ein kurzer Auszug dessen, was eine unserer Anwendungen an Daten liefert. Das ist sozusagen das, was Prometheus zu sehen bekommt und benutzt, wenn es bei einer Anwendung mit Micrometer seine regelmäßige “Wie geht’s dir?” Frage stellt:

Code

Prometheus erhellt uns mit Daten

Über eine Schnittstelle ist es möglich, die so verfügbar gemachten Daten von außerhalb der Anwendung, zum Beispiel über Prometheus, abzurufen. Prometheus ist eine Monitoring- und Benachrichtigungsanwendung, mit der sich per Micrometer verfügbar gemachte Daten analysieren lassen. Diese abgerufenen Zeitreihen werden statistisch ausgewertet und miteinander in Relation gebracht.

Die in Prometheus eingebaute Weboberfläche, die schnell und einfach verschiedene Abfragen ermöglicht, bietet sich vor allem zum Testen von Programmen während ihrer Entwicklungsphase an, um schnell Fehler zu identifizieren.

Grafana Screenshot

Grafana im Langzeitmonitoring

Für das Monitoring laufender Applikationen empfiehlt sich Grafana. Grafana ist eine Weboberfläche, die Daten aus Prometheus abruft und diese grafisch darstellen kann. In Grafana lassen sich wie auch schon in Prometheus verschiedene Benachrichtigungsoptionen einstellen, um darüber informiert zu werden, wenn beispielsweise der Speicherbedarf einer Anwendung zu groß wird oder die Anwendung nicht mehr läuft. Für Grafana müssen keine Dateien konfiguriert werden, die Konfiguration findet komplett über die Weboberfläche statt. Zur Visualisierung stehen verschiedene Diagrammtypen wie beispielsweise Liniendiagramme zur Auswahl.

Grafana Screenshots

Wenn Ihr Euch nach diesem allgemeinen Überblick nun für die praktische Anwendung im konkreten Einsatz interessiert, findet Ihr das von Jens verwendeten Beispielsetup inklusive einer ausführlichen README in GitHub.

Und falls Ihr nun Lust dazu bekommen habt, selber an einem Meetup teilzunehmen, meldet euch jetzt über Meetup in der Java User Group Bielefeld an. Meetup ist ein Dienst, mit dem Online-Gruppen organisiert werden, die Treffen für Personen mit ähnlichen Interessen veranstalten. So könnt Ihr euch mit anderen Javaianern austauschen, einen Einblick in neue, spannende Entwicklungen bekommen und diese diskutieren, Code teilen, Anwendungsbeispiele vorstellen und neue, interessante Kontakte knüpfen, was zu einem Mehrwert für alle Beteiligten führt. Wir freuen uns auf Euch und bedanken uns für Euer Interesse!

Zurück zur Übersicht