RousselTMLEARNING

TP · Alloy : de la découverte à l'expertise

TP : Monter un cluster Alloy à 3 nœuds

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) quand clustering { enabled = true } est activé sur les composants.

Déploiement du cluster #

Trois conteneurs, une même configuration.

  1. 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éez alloy-1, alloy-2 et alloy-3 avec la même configuration. Chaque nœud active le cluster et rejoint les autres via --cluster.join-addresses.
  2. 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) avec clustering { enabled = true } sur prometheus.scrape.

Observer et tester la résilience #

Répartition de charge et reprise sur panne.

  1. 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.
  2. 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 composant prometheus.scrape.cluster_demo : combien de cibles chaque nœud scrape-t-il ?
  3. 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êtez alloy-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

  • ⏱ Durée estimée : ≈ 50 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

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...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !