Pourquoi et quand exécuter cette tâche
Un
bilan de santé est une implémentation de
l'
API MicroProfile Health
fournie par un microservice. Utilisez les bilans de santé pour évaluer la santé d'un service. Ces bilans sont principalement conçus comme mécanisme de communication entre machines dans
les environnements conteneurisés, comme les
vérifications de signal de présence dans Kubernetes. La fonction
mpHealth-1.0 fournit un noeud final
/health qui
représente le statut binaire,
UP ou
DOWN, des microservices installés. Un microservice peut fournir zéro ou plusieurs bilans de santé et la santé générale du
serveur correspond à l'état ajouté de chaque bilan de santé. Le résultat général est uniquement positif si tous les bilans de santés donnent un résultat positif.
- Configurez la fonction. Mettez à jour le fichier server.xml pour ajouter la fonction :
<featureManager>
<feature>mpHealth-1.0</feature>
</featureManager>
- Utilisez l'API pour fournir les bilans de santés que vous souhaitez réaliser :
@FunctionalInterface
public interface HealthCheck {
HealthCheckResponse call();
}
L'exemple suivant montre comment vous pouvez utiliser l'API pour vos bilans de santé :
@Health
@ApplicationScoped
public class MyCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("MyCheck")
.withData("key1", "val1")
.withData("key2", "val2")
.up()
.build();
}
}
La requête HTTP envoyée au noeud final /health renvoie une réponse avec l'un des codes de statut suivants :- Le code 200 indique un bilan de santé avec un résultat positif.
- Le code 503 indique que le résultat global est négatif.
- Le code 500 indique que le système n'a pas pu traiter la demande de bilan de santé. Ce code peut indiquer une erreur de procédure.
La réponse contient également un contenu JSON (JavaScript Object Notation) avec les détails des bilans de santé. Le code suivant affiche un
exemple de résultat positif :{
"outcome": "UP",
"checks": [
{
"name": "MyCheck",
"state": "UP",
"data: {
"key": "value",
"key1": "val1",
"key2": "val2"
}
}
]
}
Le code suivant affiche un exemple de résultat négatif :{
"outcome": "DOWN",
"checks": [
{
"name": "check1",
"state": "UP"
},
{
"name": "check2",
"state": "DOWN"
}
]
}
Si vous configurez la fonction sans fournir un bilan de santé, le système répond avec le code 200.
Le contenu contient un résultat positif de UP et un ensemble de bilans vide.