Skip to content

Si le site tombe ​

Une procédure à suivre dans l'ordre, de la cause la plus probable à la plus rare. Chaque étape dit quoi vérifier, et quoi faire si c'est ça.

0. Prévenir ​

Dire à l'équipe que tu t'en occupes, pour ne pas être deux à intervenir en même temps.

1. Les VM sont-elles allumées ? ​

bash
gcloud compute instances list --filter="name~tm-"

STATUS doit être RUNNING pour tm-prod (le site et l'API) et tm-tooling (Jenkins).

Si une VM est arrêtée :

bash
gcloud compute instances start tm-prod --zone=europe-west1-b

Les conteneurs redémarrent tout seuls. Attendre une minute, puis réessayer.

2. Le DNS répond-il ? ​

bash
dig +short time.jostud.com
dig +short api.time.jostud.com

Les deux doivent répondre 34.140.149.187.

Si rien ne revient, ou une autre IP : vérifier la zone DNS de jostud.com chez Hostinger.

3. Quel est le message exact ? ​

bash
curl -sI https://time.jostud.com | head -1
curl -sI https://api.time.jostud.com/api/auth/me | head -1
RésultatAller à
Rien, délai dépassé4. Traefik et le pare-feu
502 Bad Gateway5. Les conteneurs
Erreur de certificat6. Let's Encrypt
404 page not found7. Les routes
200 pour le site, 401 pour l'APITout marche : le problème est côté client (cache, réseau de l'utilisateur)

4. Traefik et le pare-feu ​

bash
ssh eliashounnou@34.140.149.187
docker ps --filter name=timemanager-traefik
sudo ufw status
ConstatSolution
Traefik n'est pas Upcd /opt/timemanager/traefik && docker compose up -d, puis docker logs timemanager-traefik
UFW n'autorise pas 80 et 443ansible-playbook playbook.yml --tags ufw --ask-vault-pass
Tout est bon sur la VMVérifier la règle tm-allow-web et le tag web dans la console Google Cloud

5. Les conteneurs ​

bash
cd /opt/timemanager/app
docker compose ps
docker compose logs --tail 200 back
ConstatSolution
back redémarre en boucleLire ses journaux : variable manquante (--tags app), migration en échec (voir l'étape 8)
db n'est pas healthydocker compose logs db : disque plein ? df -h
Tout est Updocker compose restart back
Disque pleindocker image prune -af, puis docker compose up -d

6. Let's Encrypt ​

bash
docker logs timemanager-traefik 2>&1 | grep -i acme | tail -20

Les causes possibles : le DNS ne pointe plus vers tm-prod, le port 80 est fermé, ou trop de demandes cette semaine. Voir Dépannage.

7. Les routes ​

bash
ls /opt/timemanager/traefik/dynamic/

Il doit y avoir api.yml, frontend.yml, docs.yml et jenkins.yml. S'il en manque un : ansible-playbook playbook.yml --tags traefik --ask-vault-pass.

8. Un déploiement récent a tout cassé ? ​

Regarder les derniers builds dans Jenkins : backend, frontend. Si la panne a commencé juste après un déploiement, revenir à l'image précédente : voir Revenir à une version précédente.

Puis demander à l'équipe concernée un git revert dans main, sinon le prochain build republiera la version cassée.

9. Après la panne ​

À fairePourquoi
Prévenir l'équipe que c'est régléTout le monde sait que le service est revenu
Noter ce qui s'est passé, la cause et la solutionLa prochaine fois ira plus vite
Ajouter la cause à Dépannage si elle n'y est pasGarder la documentation à jour
Corriger la cause de fondUne panne réglée à la main reviendra