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.
Details
Hier ist eine beispielhafte Detailanzeige zu sehen, die den /metrics-Endpoint aus dem Actuators-Paket ganz einfach visualisiert.
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.
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.
Weitere Beiträge
von Thomas Bosch
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Thomas Bosch
IT Consultant
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.