Actuator in Spring Boot
Gesundheitzustand über den Actuator
Das Actuator-Modul von Spring Boot stellt HTTP-Endpunkte bereit, die Auskunft über den Zustand der Anwendung geben und es erlauben, die Anwendung zu beeinflussen.
Eigene Informationen über den „Gesundheitzustand“ lassen sich einbauen.
Die Informationen werden über REST veröffentlicht, können aber auch über JMX abgerufen werden.
Achtung: Actuator 1 und Actuator 2 unterscheiden sich deutlich!
Actuator in der POM
Einbinden wie üblich über die POM:
org.springframework.boot
spring-boot-starter-actuator
Da ganze funktioniert nur im Web-Modus, also muss org.springframework.boot:spring-boot-starter-web auch in der POM-Datei sein.
Starte man nun die Anwendung, kann man im Log die neuen Endpunkte sehen.
Aktivierung der Endpunkte
Damit ein Actuator Endpunkt über HTPP verfügbar ist, muss er enabled und exposed sein.
- Die meisten Endpunkte sind standardmäßig deaktiviert.
- Man kann nur actuator/health und actuator/health nutzen, und selbst da ist wenig Info vorhanden.
Um mehr Endpunkte freizuschalten setze man die die application.properties:
management.endpoints.web.exposure.include=*
Der Wildcard * aktiviert alle, alternativ zählt man kommasepariert auf.
Welche Endpunkte es gibt dokumentiert .
Auswahl einiger Spring Boot Endpunkte
Die Endpunkte liegen alle eine Ebene unter :
/beansAlle Spring-Beans/envDas Environment-Properties/health„health information“/infoApplikationsinformationen/loggersWelche Log-Level für welche Pakete gelten/metricsMetriken über die aktuelle Anwendung, es muss eine weitere ID folgen, etwa *metrics/http.server.requests*/threaddumpThread-DumpZum Beispiel: .
Die genaue JSON-Struktur erklärt .
Management Endpoint URL
Natürlich lassen sich Dinge wie
- Server-Port
URL-Basispfad- freigeschaltete Endpunkte
- SSL-Verschlüsselung
konfigurieren.
Siehe dazu die Referenz-Dokumentation
Bin ich gesund?
Unter /health finden sich Informationen über den „Gesundheitszustand“ der Anwendung.
Der Status kann UP oder DOWN sein. Standardmäßig gibt es nur status
Authentifizierung
Bei einer nicht-authentifizierten Verbindung bekommt man nicht mehr zu sehen als den Status.
Um das zu ändern, müssen wir 1. in die POM mit aufnehmen:
org.springframework.boot
spring-boot-starter-security
Dann 2. in application.properties (zum Testen!):
management.endpoint.health.show-details=always
spring.security.user.name=user
spring.security.user.password=pass
Nach dem Neustart der Anwendung und Neuladen der Webseite erfolgt eine BASIC-Authentifizierung. Geben wir user/pass ein, sehen wir alles.