# Surveillance de disponibilité — UptimeRobot (MG-141)

Objectif : être prévenu si le site tombe, **avant** qu'un patient ne le
découvre.

UptimeRobot suffit largement ici : gratuit jusqu'à 50 sondes, vérification
toutes les 5 minutes, alertes par e-mail.

---

## 1. Créer le compte

<https://uptimerobot.com> → *Register for FREE*.

Utiliser une adresse **relevée régulièrement**. Une alerte dans une boîte
jamais consultée ne sert à rien.

---

## 2. Sonde principale — le site

*Add New Monitor* :

| Champ | Valeur |
|---|---|
| Monitor Type | **HTTP(s)** |
| Friendly Name | `Maud Gaquère — Site` |
| URL | `https://www.maud-gaquere.fr` |
| Monitoring Interval | 5 minutes |

Options avancées :

- **Keyword** (recommandé) : passer en type *Keyword*, mot-clé
  `Maud Gaquère`, alerte si le mot **n'existe pas**.

> Pourquoi ? Un serveur peut renvoyer 200 tout en affichant une page blanche
> ou une erreur PHP. La vérification par mot-clé détecte ce cas, pas le simple
> code HTTP.

---

## 3. Sonde secondaire — le formulaire

| Champ | Valeur |
|---|---|
| Type | **Keyword** |
| Name | `Maud Gaquère — Formulaire` |
| URL | `https://www.maud-gaquere.fr/contact` |
| Keyword | `Envoyer ma demande` |
| Alert if | Keyword **not exists** |

Le formulaire de contact est la fonction la plus critique du site : c'est par
lui qu'arrivent les demandes de rendez-vous.

---

## 4. Sonde du certificat SSL

UptimeRobot surveille automatiquement l'expiration du certificat sur les sondes
HTTPS. Vérifier dans *My Settings* que **SSL Expiry Notifications** est actif,
avec une alerte à **30 jours**.

Le renouvellement Let's Encrypt d'OVH est automatique, mais il arrive qu'il
échoue silencieusement.

---

## 5. Destinataires des alertes

*My Settings* → *Alert Contacts* :

- [ ] E-mail de Maxime — **obligatoire**
- [ ] E-mail de Maud — optionnel, à voir avec elle

> Réfléchir avant d'ajouter Maud : recevoir « votre site est indisponible » un
> dimanche soir, sans pouvoir agir, est plus anxiogène qu'utile. Il est
> souvent préférable que seul Maxime soit alerté.

Régler **Notify when down after** sur *2 occurrences* : cela évite les fausses
alertes sur une micro-coupure réseau.

---

## 6. Page de statut publique (optionnel)

UptimeRobot propose une page de statut publique. **Inutile ici** : elle
s'adresse à des clients techniques. Pour un cabinet, elle n'apporte rien et
expose des informations d'indisponibilité sans bénéfice.

---

## 7. Que faire en cas d'alerte

### Le site ne répond pas

1. Vérifier soi-même : <https://www.maud-gaquere.fr>
2. Si c'est confirmé, consulter le statut OVH :
   <https://www.status-ovhcloud.com>
3. Se connecter en SSH et regarder les journaux :

```bash
ssh monlogin@ftp.clusterXXX.hosting.ovh.net
tail -50 ~/gaquere/var/log/prod.log
tail -50 ~/logs/*.error.log
```

4. Causes les plus fréquentes :
   - quota disque atteint (`df -h`, `du -sh ~/gaquere/var/log`)
   - base de données saturée ou indisponible
   - déploiement interrompu à mi-parcours
   - certificat SSL expiré

### Le mot-clé a disparu mais le site répond

Le site s'affiche mais son contenu est cassé — typiquement une erreur PHP après
une modification. Vérifier `var/log/prod.log` et, si nécessaire, revenir à la
version précédente (voir `deploy/VERIFICATION_PROD.md`).

---

## 8. Surveillance complémentaire

| Quoi | Où | Fréquence |
|---|---|---|
| Espace disque OVH | espace client | mensuelle |
| Taille de `var/log/` | SSH : `du -sh var/log` | mensuelle |
| Sauvegardes présentes | SSH : `ls -lt var/backups` | mensuelle |
| Mises à jour Symfony | `composer outdated` | trimestrielle |
| Failles connues | `composer audit` | trimestrielle |
| Expiration du domaine | espace client OVH | annuelle |

> `composer audit` vérifie les dépendances contre la base des vulnérabilités
> connues. À lancer avant chaque déploiement important.
