Skip to content

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 :

bash
ssh services-internal
cd /data/grafana/prometheus/config/
nano config.yml

Le fichier contient plusieurs scrape_configs. Les deux qui nous intéressent pour ajouter un site web :

JobPour quoi
website-monitor-prodSites de production (domaine client final)
website-monitor-stagingSites 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 :

yaml
  - 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 :

yaml
      - https://www.elpol-vs.ch
      - https://www.exemple.ch          # <-- nouvelle ligne
      - https://extranet.institutcentral.ch

3. Cas particuliers d'URL

SituationComment 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 partiCommenter 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 :

bash
docker restart prometheus

Vé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 :

yaml
  - job_name: 'buchard-better-search'
    static_configs:
    - labels:
        environment: staging
      targets:
      - buchard-search.staging.spektrum-suisse.ch
    - labels:
        environment: prod
      targets:
      - search.buchard.ch

Différences avec le monitor blackbox :

  • Pas de metrics_path: /probe (Prometheus scrape /metrics par défaut)
  • Pas de relabel_configs
  • Le target est host:port (ou host si 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 == 0 s'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.

Contributors

The avatar of contributor named as Clément Favre Clément Favre

Changelog