Ce que vous allez apprendre dans ce TP
- Former un cluster de 3 nœuds
- Observer la répartition des cibles
- Constater la reprise après panne
Introduction #
Ce que vous allez apprendre dans cette section
- Former un cluster de 3 nœuds
- Observer la répartition des cibles
- Constater la reprise après panne
Contexte. Un seul Alloy est un point de défaillance unique et finit par être saturé. Le mode cluster répartit automatiquement les cibles de scraping entre plusieurs instances et reprend la charge d'un nœud tombé : vous le démontrez en cassant volontairement un nœud.
Prérequis : Docker Compose, notions de scraping Prometheus · Durée estimée : 50 min
Les nœuds communiquent par protocole gossip sur le port HTTP d'Alloy et se répartissent les cibles de scraping (sharding) quandclustering { enabled = true } est activé sur les composants.Déploiement du cluster #
Trois conteneurs, une même configuration.
1. Déclarer trois nœuds
Pourquoi ? Les nœuds doivent pouvoir se découvrir : l'adresse de jonction et l'activation du cluster sont ce qui les fait communiquer par gossip.
Dans un nouveau Compose, créezalloy-1,alloy-2etalloy-3avec la même configuration. Chaque nœud active le cluster et rejoint les autres via--cluster.join-addresses.2. Activer le clustering sur le scraping
Pourquoi ? Le clustering se déclare composant par composant : seules les cibles du scrape marqué clustering sont réparties, le reste reste dupliqué.
Écrivez une configuration qui scrape six cibles (les trois Alloy, Prometheus, et deux autres) avecclustering { enabled = true }surprometheus.scrape.
Observer et tester la résilience #
Répartition de charge et reprise sur panne.
3. Vérifier la formation du cluster
Pourquoi ? Vérifier que le cluster compte bien 3 participants évite de croire à une haute disponibilité qui n'existe pas (nœuds isolés).
Ouvrez la page Clustering de l'UI (http://localhost:12345/clustering) puis vérifiez la métrique du nombre de pairs.4. Constater la répartition
Pourquoi ? Chaque nœud doit ne scraper qu'une partie des cibles : c'est ce qui évite les doublons et permet de monter en charge horizontalement.
Dans l'UI de chaque nœud, ouvrez le composantprometheus.scrape.cluster_demo: combien de cibles chaque nœud scrape-t-il ?5. Simuler une panne
Pourquoi ? Une haute disponibilité ne se croit pas, elle se teste : arrêter un nœud montre que ses cibles sont reprises, et le redémarrer que la charge se rééquilibre.
Arrêtezalloy-3, attendez quelques secondes puis constatez que ses cibles ont été reprises par les deux autres nœuds. Relancez-le et observez le rééquilibrage.
Niveau de difficulté : ●●●●○ (4/5)
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Discussions récentes de la formation
- Alloy : recevoir de l'OTLP et l'envoyer vers Tempo et Mimir✓ résolu · 1 réponse(s)
Poser une question sur cette leçon →Voir toutes les discussions de la formation
Glossaire de la formation
Observabilité
La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...
Traces distribuées
Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...
Métriques
Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...
Profilage en continu (Continuous Profiling)
Analyse constante de l'exécution du code en production pour identifier avec précision quelles lignes de code ou fonctions consomment le plus de ressou...
Access Log
Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...
Client IP
L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...
Timestamp
La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.
Request
La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...
Status Code
Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...
Size
Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...
Referrer
L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...
User-Agent
Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...
Response Time
La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...
Grafana Alloy
Collecteur de télémétrie open source et flexible, successeur de Grafana Agent. Il est conçu pour collecter, transformer et exporter des logs, métrique...
River
Langage de configuration déclaratif utilisé par Grafana Alloy, inspiré de HCL (Terraform). Il permet de définir des pipelines de télémétrie complexes ...
Grafana Loki
Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...
Articles recommandés
Grafana Alloy : Déploiement Avancé et Clustering
Maîtrisez le déploiement avancé de Grafana Alloy en mode clustering. Comprenez ses avantages pour...
Fleet Management, Kubernetes Monitoring et moteur OpenTelemetry : Alloy à grande échelle
Piloter des centaines d'Alloy avec remotecfg et Fleet Management, déployer le chart Helm k8s-moni...
OpenTelemetry Collector, Grafana Alloy et Bindplane : comparer trois approches des pipelines de télémétrie
Comparatif détaillé de trois façons de gérer des pipelines de télémétrie : l'OpenTelemetry Collec...
Grafana Alloy et Prometheus : collecter et envoyer des métriques
Apprenez à configurer Grafana Alloy pour collecter, transformer et envoyer des métriques en utili...
VictoriaMetrics : pourquoi et comment, du nœud unique au cluster
Ce qu'apporte VictoriaMetrics par rapport à Prometheus seul, ses composants (single-node, vmagent...
Déployer et exploiter Pyroscope sur Kubernetes
Installer Pyroscope avec Helm, collecter les profils du cluster avec Alloy (annotations et eBPF),...
La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place
Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...
Alloy et l'écosystème Grafana Labs : quel composant pour quel outil ?
La carte des intégrations d'Alloy avec Faro, Beyla, k6, Loki, Mimir, Tempo, Pyroscope, Database O...
Faro et Alloy : recevoir le RUM front-end avec faro.receiver
Configurer faro.receiver : CORS, clé d'API, limite de débit, source maps, puis envoyer erreurs, W...