Spring Boot Admin

Keine Kommentare

Ich möchte euch in diesem Blog kurz ein kleines Admin-Tool vorstellen.

Idee

Vielleicht noch vorweg. Wir haben Anfang des Jahres, in einem Kundenprojekt, unsere gesamte Batchumgebung auf Spring Boot umgestellt. Das bedeutet, dass wir nun statt einer großen JVM mit n Batches nun n JVMs laufen haben, die getrennt voneinander deployt, gestartet und verwaltet werden können. Nach dieser Umstellung haben wir nach einem Weg gesucht, eine Übersicht aller deployten Batches zu erhalten, sowie ggf. administrative Tätigkeiten auf diesen ausführen zu können. Hier wäre beispielsweise das Setzen von Loglevels zur Laufzeit genannt. Daraus entstand dann die Idee, dafür eine kleine Anwendung zu bauen.

Diese Anwendung sollte zunächst einmal folgende Features bieten

  • Übersicht aller installierten Anwendungen inklusive …
  • Versionsnummer
  • Status
  • Detailansicht einzelner Informationen der JVM
  • Download der Logdatei
  • Einsehen/Ändern von Loglevels

Umsetzung

Wie sollte es anders sein, auch dieses Anwendung wurde als Spring Boot Anwendung entwickelt. Der Name dieser Anwendung lautet spring-boot-admin und wird hier im folgenden auch so bezeichnet. Sie basiert folglich auf dem Spring Framework, jedoch Client-seitig auf AngularJS. Mit AngularJS werden die Spring Boot REST-Endpoints der einzelnen Anwendungen angeprochen und entsprechend visualisiert. Das Design wurde ist an das SpringIO-Design angelehnt bzw. wurde von dort auch teilweise kopiert (HTML Struktur / CSS).

Zwingend notwendig für die Nutzung des spring-boot-admin ist auch das Client-Paket, welches in jeder darzustellenden / zu administrierenden Anwendung als Abhängigkeit integriert werden muss. Dieser spring-boot-starter-admin-client enthält die notwendigen Abhängigkeiten, die spring-boot-admin von „seinen“ Anwendungen erwartet. Zudem ist darin eine AutoConfiguration enthalten, die zum einen REST-Controller in den Spring Context lädt, desweiteren aber auch den Registrator lädt, der die Registrierung der Anwendung beim spring-boot-admin übernimmt.

Neben der Abhängigkeit zu spring-boot-starter-admin-client muss eine registierfähige Anwendung noch mindestens zwei Properties in ihre application.properties einfügen. Zum einen die URL zum spring-boot-admin, um den REST-Endpoint für die Registrierung ansprechen zu können, zum anderen eine ID, die natürlich eindeutig sein muss und den Key in der Registry des spring-boot-admin darstellt.

Screenshots

Zu guter Letzt noch ein paar Screenshots, um sich ein kontretes Bild machen zu können.

Übersicht

Dies ist die Übersicht, welches eine Auflistung der registrierten Anwendungen bietet.

overview

Details

Hier ist eine beispielhafte Detailanzeige zu sehen, die den /metrics-Endpoint aus dem Actuators-Paket ganz einfach visualisiert.

metrics

Loglevel

Beim setzen des Loglevels wird jolokia genutzt, um JMX Beans über eine REST-Api zu steuern. Das standardmäßig von Spring Boot genutze Logging Framework logback bietet einen JMXConfigurator an, der somit dann per REST angeprochen werden kann.

logging

 

Ausblick

Zukünftig könnte man sich noch eine kleines Monitoring/Notification-Feature einbauen, welches den Status der Anwendungen überwacht und bei Änderungen, z.B. eine Email versendet.

Abschließend gilt noch zu sagen, dass das Projekt OpenSource ist, in GitHub zu finden ist, und Pull Requests mit neuen Features natürlich gerne gesehen sind.

Nach seinem Studium der Informatik stieß er direkt im Anschluss, im Jahr 2007, auf codecentric und ist seitdem begeisterter Arbeitnehmer.
In seinen Projekten bei der codecentric war er für diverse Versicherungen tätig und hat darin Systeme und Lösungen für Versicherungsprodukte geschaffen.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.