Monitoring Grafana - ajouter un site
Tous nos sites publics et apps internes sont surveillés en continu : si une URL ne répond plus en 200 OK, on en est alerté avant le client. La sonde est faite par blackbox_exporter, les métriques sont stockées dans Prometheus, et les dashboards/alertes vivent dans Grafana.
Pour le contexte global de la stack télémétrie, voir Télémétrie.
Règle d'or
Tout nouveau site mis en prod (ou en staging permanent) doit être ajouté au monitoring dans le même PR que sa mise en ligne. Sinon on l'oublie.
Où ça se passe
La config Prometheus est éditée directement sur le serveur télémétrie :
ssh services-internal
cd /data/grafana/prometheus/config/
nano config.ymlLe fichier contient plusieurs scrape_configs. Les deux qui nous intéressent pour ajouter un site web :
| Job | Pour quoi |
|---|---|
website-monitor-prod | Sites de production (domaine client final) |
website-monitor-staging | Sites de staging permanent (*.spektrum.media) |
Les autres jobs (prometheus, grafana, blackbox_exporter, capgo-apps, buchard-better-search...) sont des cas spécifiques décrits plus bas.
Cas standard : ajouter une URL au monitor
C'est 90% des cas. On vient d'ajouter un nouveau site prod, on veut être alerté s'il tombe.
1. Repérer le bon job
Dans config.yml, descendre jusqu'au job correspondant à l'environnement :
- job_name: 'website-monitor-prod'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
# Please sort alphabetically for inventory purposes!!!!
- labels:
environment: prod
targets:
- https://actiondiabete.ch
- https://apol.ch
...2. Ajouter l'URL au bon endroit alphabétique
Tri alphabétique obligatoire
La liste est triée pour qu'on retrouve un site d'un coup d'œil. Insère ta nouvelle URL à la bonne place, pas en fin de liste. Le commentaire dans le YAML ("Please sort alphabetically for inventory purposes !!!!") n'est pas décoratif.
Exemple, ajout de https://www.exemple.ch entre elpol-vs.ch et extranet.institutcentral.ch :
- https://www.elpol-vs.ch
- https://www.exemple.ch # <-- nouvelle ligne
- https://extranet.institutcentral.ch3. Cas particuliers d'URL
| Situation | Comment l'ajouter |
|---|---|
| Page d'accueil simple | - https://www.exemple.ch |
| Page profonde critique (shop, login) | Ajouter une 2e ligne avec le path : - https://www.exemple.ch/shop |
| API avec endpoint health | - https://api.exemple.ch/healthCheck |
| Site désactivé / client parti | Commenter la ligne avec la raison : # - https://x.ch - inactive client |
Plusieurs URLs par site, c'est OK et recommandé
Voir cave.pully.ch + cave.pully.ch/assortiments, ou theswisscollector.com + theswisscollector.com/shop. Ça permet de détecter quand seul le shop tombe alors que la home répond.
4. Recharger Prometheus
Après save dans nano (Ctrl+O, Enter, Ctrl+X), il faut que Prometheus relise sa config :
docker restart prometheusVérifier que ça scrape
Une fois redémarré, va sur Grafana => Explore => source Prometheus et lance :
probe_success{instance="https://www.exemple.ch"}Tu dois voir une valeur (1 si up, 0 si down). Si la métrique n'existe pas, la cible n'est pas prise en compte - vérifie l'indentation YAML.
Cas avancé : nouveau job avec exporter custom
Quand un site/service expose lui-même des métriques Prometheus (endpoint /metrics), on n'a pas besoin de passer par blackbox. Exemple, buchard-better-search :
- job_name: 'buchard-better-search'
static_configs:
- labels:
environment: staging
targets:
- buchard-search.staging.spektrum-suisse.ch
- labels:
environment: prod
targets:
- search.buchard.chDifférences avec le monitor blackbox :
- Pas de
metrics_path: /probe(Prometheus scrape/metricspar défaut) - Pas de
relabel_configs - Le
targetesthost:port(ouhostsi HTTPS standard), pas une URL complète - L'app doit exposer un endpoint Prometheus - sinon utilise le job blackbox
Ajouter un nouveau job se fait à la fin des scrape_configs, suivi du même docker restart prometheus.
Tableau de bord et alertes
Une fois la cible scrapée :
- Dashboard : Grafana =>
Blackbox Exporter(ou équivalent) affiche automatiquement le nouveau site - Alertes : les règles d'alerte sur
probe_success == 0s'appliquent à toutes les cibles du job, donc le nouveau site est alerté sans config supplémentaire
Pour les alertes spécifiques (path critique, certif qui expire)
Si tu veux une alerte particulière (genre "alerter au bout de 2 min au lieu de 5"), il faut éditer les règles d'alerte Prometheus, pas juste ajouter la cible. C'est une autre doc.

