Cinq cents sites municipaux, chacun potentiellement en panne à tout moment, et une équipe de quatre personnes pour surveiller l’ensemble : cette équation n’a qu’une solution viable, un tableau de bord unique capable de faire remonter l’anomalie sans qu’un humain n’ait à consulter chaque site individuellement. C’est le défi posé par un client fédérant un grand nombre de sites de mairies et d’intercommunalités sur une même infrastructure WordPress multisite.
Nous avons construit ce tableau de bord autour de Grafana, alimenté par plusieurs sources de métriques, pour donner à l’équipe une vue d’ensemble exploitable en quelques secondes plutôt qu’une collection de cinq cents alertes individuelles.
Choisir les sources de métriques
Trois sources alimentent le tableau de bord, chacune apportant une information différente :
- Prometheus, qui interroge périodiquement un point de terminaison de santé exposé par chaque site (temps de réponse, code HTTP, disponibilité de la base de données).
- Les journaux du serveur web, agrégés via Loki, pour détecter des pics d’erreurs 500 ou 404 anormaux sur un site précis.
- Les métriques WordPress internes, exposées par un point de terminaison personnalisé qui rapporte le nombre d’extensions actives, la version de WordPress et de PHP, et la date de dernière sauvegarde réussie.
Exposer une métrique de santé personnalisée par site
Chaque site du réseau expose un point de terminaison /wp-json/parc/v1/sante créé via register_rest_route, interrogé toutes les minutes par Prometheus :
add_action( 'rest_api_init', function() {
register_rest_route( 'parc/v1', '/sante', [
'methods' => 'GET',
'callback' => function() {
global $wpdb;
$wpdb->get_var( 'SELECT 1' );
return [
'wp_version' => get_bloginfo( 'version' ),
'php_version' => phpversion(),
'db_ok' => ! empty( $wpdb->last_result ),
'derniere_sauvegarde' => get_option( 'derniere_sauvegarde_horodatage' ),
];
},
'permission_callback' => '__return_true',
] );
} );

Organiser le tableau de bord par criticité, pas alphabétiquement
Le premier tableau de bord construit listait les cinq cents sites par ordre alphabétique, une organisation qui noyait les sites réellement critiques (mairies de grande taille, portails de démarches administratives) parmi des sites vitrine à faible enjeu. Nous avons réorganisé l’affichage en trois niveaux :
- Un panneau de synthèse en haut, affichant uniquement le nombre de sites en anomalie sur l’ensemble du parc, avec un code couleur.
- Un panneau intermédiaire regroupant les sites par intercommunalité, correspondant à l’organisation réelle du client, plutôt que par ordre alphabétique de nom de commune.
- Un panneau détaillé, accessible en un clic depuis les deux précédents, affichant l’historique de disponibilité d’un site précis sur les sept derniers jours.
Configurer des alertes qui ne noient pas l’équipe
Avec cinq cents sites, une alerte par site en cas de ralentissement ponctuel génère rapidement un bruit ingérable. Les règles d’alerte retenues distinguent deux niveaux :
| Condition | Action |
|---|---|
| Un site répond en erreur 500 plus de trois fois en cinq minutes | Notification immédiate sur le canal d’astreinte |
| Plus de dix sites simultanément en anomalie | Alerte critique, suspicion de panne d’infrastructure partagée |
Cette distinction évite qu’un incident isolé sur un site sans enjeu déclenche la même alarme qu’une panne d’infrastructure touchant potentiellement l’ensemble du réseau.
Ce que ce tableau de bord a changé au quotidien
Avant sa mise en place, un incident sur un site isolé pouvait rester invisible plusieurs jours, signalé uniquement par un appel téléphonique de la mairie concernée. Depuis, la détection se fait en moyenne en moins de cinq minutes, directement par l’équipe technique, sans attendre le signalement d’un utilisateur.
Surveiller cinq cents sites individuellement n’est pas un problème d’échelle, c’est un problème d’agrégation de l’information.
En résumé
Un tableau de bord unique pour cinq cents sites ne consiste pas à afficher cinq cents lignes de statut, mais à construire une hiérarchie de vues qui va de la synthèse globale au détail d’un site précis. Cette organisation par criticité, plutôt que par ordre alphabétique, a été le véritable levier de lisibilité pour l’équipe.