The Imixs Health Check
The Imixs-Workflow Service provides a HealthCheck implementation based on the Microprofile Health API.
Health checks are used to probe the state of a computing node from another machine (i.e. a kubernetes service controller). The Imixs Health Check is used to determine the status of the Imixs-Workflow instance.
This check indicates the overall status of the workflow engine. If models are available and also database access and security works the service answers with HTTP 200 and a body that looks like this:
{
"status": "UP",
"checks": [
{
"name": "imixs-workflow",
"status": "UP",
"data": {
"engine.version": "5.2.9-SNAPSHOT",
"model.groups": 1,
"model.versions": 1,
"index.status": "ok",
"database.status": "ok"
}
},
{
"name": "ready-deployment.imixs-office-workflow.war",
"status": "UP"
}
]
}
The Health Check return the status ‘DOWN’ with HTTP 503 in case no workflow model is available the database and index checks failed. For example in case of a database error the result looks like this:
{
"status": "DOWN",
"checks": [
{
"name": "imixs-workflow",
"status": "DOWN",
"data": {
"index.status": "ok",
"database.status": "failure"
}
},
{
"name": "ready-deployment.imixs-office-workflow.war",
"status": "UP"
}
]
}
Wildfly
The health service endpoint depends on the application server platform. This is an example for the Wilfly Server where the health service can be called on port 9990
http://localhost:9990/health
Kubernetes
To validate the health status in Kubernetes you can do a readinessProbe and livenessProbe:
spec:
containers:
...
livenessProbe:
httpGet:
path: /health
port: 9990
initialDelaySeconds: 120
periodSeconds: 10
failureThreshold: 3
...
Note: You need to publish port 9990 in a service.