In meinem Post https://javaeeblog.wordpress.com/2019/01/27/alles-gesund-health-checking-mit-microprofile-health habe ich einen Überblick über MicroProfile Health in der Version 1.0 gegeben. Mittlerweile ist die Version 2.0 erschienen (als Teil von MicroProfile 3.0), woduch einige – teilweise inkompatible – Änderungen einhergehen:
- Die Prüfungen werden nun in Tests der Verfügbarkeit (Liveness) und Bereitschaft (Readiness) unterteilt, um so besser die Anforderungen von Container-Infrastrukturen zu unterstützen (vgl. entsprechende Probes in Kubernetes). Statt des bisherigen Qualifiers
@Health
werden nun@Live
bzw.@Ready
zur Definition vonHealthCheck
-Beans verwendet:@ApplicationScoped @Liveness public class LivenessCheck implements HealthCheck { @Override public HealthCheckResponse call() { return HealthCheckResponse .named("Service1") .up() .build();
@Health
steht noch zur Verfügung, ist aber deprecated. - Die neuen Endpunkte
/health/live
und/health/ready
veröffentlichen den Zustand von Liveness bzw Readiness:GET /health/live 200 OK { "status": "UP", "checks": [{ "name": "Service1", "status": "UP" }] }
Der bisherige Endpunkt
/health
existiert weiterhin. - Im JSON-Format wurden die Attribute
outcome
undstate
durchstatus
ersetzt.
Ausblenden von Default-Checks in MicroProfile Health 2.1
Die Implementierung von Healthchecks als CDI-Beans ermöglicht es, dass auch Plattform-Implementierungen/Bibliotheken Prüfergebnisse bereitstellen (bspw. ein DB Connection Pool). Setzt man die neue MicroProfile Configuration Property mp.health.disable-default-procedures
auf true
, werden solche Default-Checks nicht aktiviert, d. h. im Response der o. a. Endpoints befinden sich nur von der Anwendung selbst bereitgestellte Werte.
Demo
Ich habe das Beispielprojekt mit anderen MicroProfile-Demos kombiniert in https://github.com/GEDOPLAN/microprofile-demo eingecheckt. Im Verzeichnis microprofile-health
finden Sie ein Demoprojekt mit zwei Health Checks, deren Ergebnis über eine Webseite beeinflusst werden kann. Die Anwendung kann als WAR-File auf einen Server mit Unterstützung von MicroProfile 3.0 deployt werden. Alternativ können über vorkonfigurierte Maven-Profile Docker-Images zum direkten Ausprobieren erstellt werden.
Bis bald – vielleicht in einem unserer Trainings in Berlin, Bielefeld, Köln oder bei Ihnen!
https://gedoplan-it-training.de/