Aller au contenu

Cours Spring Boot Actuator & Healthchecks

Pour DevOps / CI-CD

Objectifs pédagogiques

À la fin de ce cours, vous serez capables de :

Qu’est-ce que Spring Boot Actuator ?

Spring Boot Actuator est un module officiel qui expose automatiquement des endpoints techniques pour superviser votre application :

Vous n’avez aucun contrôleur Java à écrire : tout est généré automatiquement par Spring Boot.

Actuator = le tableau de bord de votre application.

Activer Actuator dans Spring Boot

Ajouter la dépendance dans pom.xml :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

puis management.endpoints.web.exposure.include=health dans votre fichier application.properties ou application.yaml

L’endpoint /actuator/health

Une fois Actuator activé, Spring Boot crée automatiquement un GET /actuator/health

Exemple si tout va bien (réponse retournée en JSON):

{ "status": "UP" }

Exemple si un problème est détecté

{ "status": "DOWN" }

Aucun code Java n’est nécessaire : Spring Boot gère tout.

Pourquoi un Healthcheck ?

Un healthcheck sert à vérifier que votre application fonctionne réellement après un déploiement:

Bonnes pratiques DevOps

Après un déploiement automatisé, un pipeline CI/CD doit :

Healthcheck dans un pipeline GitLab CI

Exemple de job deploy :

deploy:
  stage: deploy
  image: eclipse-temurin:17-jdk-alpine
  script: |
    java -jar target/app.jar &
    sleep 12
    apk add --no-cache curl
    
    if curl -f http://localhost:8080/actuator/health; then
      echo "Healthcheck OK"
    else
      echo "Healthcheck KO"
      exit 1
    fi
  when: manual

Explication :

Healthcheck dans un Dockerfile

Vous pouvez ajouter le healthcheck dans l’image :

HEALTHCHECK CMD curl -f http://localhost:8080/actuator/health || exit 1

Docker pourra alors dire :

Healthcheck dans Kubernetes (bonus)

Dans un pod Kubernetes :

livenessProbe:
  httpGet:
    path: /actuator/health
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

Kubernetes relance automatiquement le conteneur si :

Exercices pratiques

Exercice 1 — Activer Actuator

Attendu : { "status": "UP" }

Exercice 2 — Pipeline CI avec healthcheck

Créer un job :

Attendu : le job échoue si l’app ne démarre pas correctement.

Exercice 3 — Simuler une panne

server.port=9999

Attendu : healthcheck KO : job en rouge normalement

Correction :

deploy:
  stage: deploy
  image: eclipse-temurin:17-jdk-alpine
  script: |
    java -jar target/app.jar &
    sleep 12
    apk add --no-cache curl
    if curl -f http://localhost:8080/actuator/health; then
      echo "Healthcheck OK"
    else
      echo "Healthcheck KO"
      exit 1
    fi
  when: manual

Conclusion

Pas compliqué à mettre en place mais important de le faire !

Concept Définition
Actuator Module Spring Boot qui expose des endpoints techniques
/actuator/health Indique la santé de l’application
Healthcheck Test automatisé pour valider le bon fonctionnement de l’application
CI/CD Utilise le healthcheck pour valider le déploiement
curl -f Échoue si la réponse HTTP n’est pas correcte