Posts Tagged: ‘microservices’

Spring Boot Admin: Einfach genial und genial einfach

14. Oktober 2018 Posted by Stephan Kopp

Spring Boot Applikationen eignen sich optimal, um eine Microservice Applikation bestehend aus vielen kleinen Applikationen zu erstellen. Doch wie überwacht und verwaltet man diese Sammlung aus einzelnen Programmen?

Das Spring Boot Admin Projekt ist hierfür eine geniale und vor allem kostenlose Ergänzung.

Spring_Boot_Admin-3.png

Spring Boot Admin Server

Als Admin Server erstellt man sich eine eigene Spring Boot Applikation, fügt die Maven Dependency und die Annotation @EnableAdminServer hinzu und das wars schon.

pom.xml

<dependency>
   <groupId>de.codecentric</groupId>
   <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>

Spring Boot Applikation

@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

   public static void main(String[] args) {
      SpringApplication.run(AdminServerApplication.class, args);
   }
}

An diesem Server können sich jetzt alle Spring Boot Applikationen anmelden. Ein Beispiel findet man hier.


Nun zur Client Applikation, die sich am Server anmeldet

Dazu muss man lediglich das Client Paket in die Dependencies aufnehmen und zwei Parameter setzen. Das wäre die minimale Variante, aber natürlich noch längst nicht alles. Um wirklich alle Features nutzen zu können, müssen doch noch ein paar Dinge gemacht werden. Zunächst aber zu den Basics.

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.3</version>
</dependency>

application.properties

spring.boot.admin.client.url=http://localhost:9090

Actuator

Dieses Paket integriert eine Menge nützlicher APIs in die eigene Applikation, welche vom Spring Boot Admin Server verwendet werden um die eigene Applikation zu überwachen und auch zu steuern.

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

application.properties

management.endpoints.web.exposure.include=*
logging.file=log/logfile.txt
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx

Der Actuator funktioniert auch ohne Konfiguration, aber mit diesen Einstellungen passiert zusätzlich zu den Standards noch folgendes:

  • Es werden alle Endpoints aktiviert, nicht nur health und up
  • Es wird ein Logfile geschrieben und farblich formatiert, dadurch wird auch automatisch der Endpoint aktiviert um auf dieses Logfile zuzugreifen

Security

Security sollte von Beginn an immer aktiviert sein. Damit benötigt natürlich auch der Admin Server Zugang zu unserer Applikation, bzw. nur zur /actuator API. Das kann man z.B. durch einen eigenen zentralen User machen, oder auch mit selbst generierten Accounts pro Applikation. Diese Zugangsdaten müssen dem Admin Server bei der Anmeldung mitgeteilt werden.

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

application.properties

spring.security.user.name=user
spring.security.user.password=password

spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}

Das wars schon

Dieses Basis Setup genügt, um ein zentrales (wirklich schönes) Webinterface zu haben, über das ich alle notwendigen Informationen meiner Applikationen abrufen kann. Es geht dabei nicht nur um den reinen Status up/down. Ich kann direkt auf die Logs der Services zugreifen oder mir die eingehende http Requests anschauen und noch sehr viel mehr.

Spring_Boot_Admin-7.png

Spring_Boot_Admin-4

Spring_Boot_Admin-5

Ein nettes Feature ist z.B. auch die Veränderung meiner Log Einstellungen ohne die Services neu starten zu müssen.

Spring_Boot_Admin-6

Jeder, der sich mit Spring Boot Applikationen beschäftigt, sollte sich das Spring Boot Admin Projekt mal genauer anschauen. Unter anderem deshalb liebe ich OpenSource.

Meinen Beispiel Code kann man sich hier anschauen.

Javaland 2016

14. März 2016 Posted by Henning Schmidt

Das Phantasialand in Brühl bei Köln war in diesem Jahr zum dritten Mail der Platz für alle, die einer der größten Konferenzen rund um den Java Mikrokosmos beiwohnen wollten. Dem offiziellen Schlachtruf „Jatumba“ folgten heuer mehr als 1.200 Enthusiasten, um sich an zwei Tagen mit den neusten Informationen und Trends zu versorgen. Das Phantasialand öffnet erst […]