Integrate server probes in MP Health readiness check

In  microprofile

Overview

MicroProfile Health 2.0 introduced a readiness health check. WFLY-12228 added support for MicroProfile Health 2.0 without enhancing the readiness health check.

This means that the readiness probe always return UP by default (as long as the microprofile-health-smallrye is installed).

This RFE enhances it with 3 probes (that are part of the EAP readiness probe script):

  • server-status - returns UP when the server-state is running

  • boot-errors - return UP if there are no boot-errors

  • deployment-status - returns UP if status for all deployments is OK

Once this RFE is done, we could simplify the EAP readiness probe script by replacing its various DMR checks by a single check to /subsystem=microprofile-health-smallrye:check-ready (or a HTTP call to http://:9990/health/ready).

Issue Metadata

Issue

Dev Contacts

QE Contacts

  • TBD

Testing By

[X] QE

Affected Projects or Components

  • This RFE impacts the microprofile-health-smallrye extension provided by WildFly

  • Once done, it can be used by Kubernetes/Openshift to configure their readiness probe

Requirements

  • Add 3 readiness health checks to MicroProfile readiness probe:

    • server-status - returns UP when the server-state is running

    • boot-errors - return UP when there are no boot-errors

    • deployment-status - returns UP when status for all deployments is OK

Non-Requirements

  • The MicroProfile Health subsystem is not supported in domain mode.

Implementation Plan

  • Update org.wildfly.extension.microprofile.health.HealthReporterService to add these 3 HealthCheck probes to the HealthReporter’s readinessChecks.

  • These 3 checks will execute a local DMR operation to determine their status.

A call to /subsystem=microprofile-health-smallrye:check-ready would aggregates results from these 3 probes:

[standalone@localhost:9990 /] /subsystem=microprofile-health-smallrye:check-ready
{
    "outcome" => "success",
    "result" => {
        "status" => "UP",
        "checks" => [
            {
                "name" => "server-state",
                "status" => "UP",
                "data" => {"value" => "running"}
            },
            {
                "name" => "boot-errors",
                "status" => "UP"
            },
            {
                "name" => "deployments-status",
                "status" => "UP",
                "data" => {"helloworld-rs.war" => "OK"}
            }
        ]
    }
}

Community Documentation

The feature will be documented in WildFly Admin Guide (in its MicroProfile Health section) to specify that server readiness incorporates these 3 checks (in addition to any readiness check contributed by the deployments)