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:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
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 https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html.
Auswahl einiger Spring Boot Endpunkte
Die Endpunkte liegen alle eine Ebene unter http://localhost:8080/actuator:
- /beans
- Alle Spring-Beans
- /env
- Das Environment-Properties
- /health
- „health information“
- /info
- Applikationsinformationen
- /loggers
- Welche Log-Level für welche Pakete gelten
- /metrics
- Metriken über die aktuelle Anwendung, es muss eine weitere ID folgen, etwa metrics/http.server.requests
- /threaddump
- Thread-Dump
Zum Beispiel: http://localhost:8080/actuator/health.
Die genaue JSON-Struktur erklärt https://docs.spring.io/spring-boot/docs/current/actuator-api/html/.
Management Endpoint URL
Natürlich lassen sich Dinge wie
- Server-Port
- URL-Basispfad
- freigeschaltete Endpunkte
- SSL-Verschlüsselung
konfigurieren.
Siehe dazu die Referenz-Dokumentation https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html
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:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
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.