Infrastructure Monitoring : AWS (K3s) to Local (Docker)
Ce projet met en place une solution de monitoring hybride permettant de surveiller un cluster Kubernetes K3s (hébergeant nos sites WordPress) s’exécutant sur AWS EC2, directement depuis une instance de monitoring locale (sur notre machine de gestion / hyperviseur local).
🏗️ Architecture du flux de données
Le monitoring repose sur un pipeline sécurisé traversant un tunnel réseau sans exposition de ports sur l’Internet public :
- Agents (Source – AWS EC2) :
- Node Exporter : Collecte les métriques système (CPU, RAM, Entrées/Sorties Disque, Réseau) de l’instance EC2.
- cAdvisor : Analyse à la volée les statistiques d’utilisation et les performances des conteneurs isolés du cluster K3s (Pods WordPress, Traefik, Cert-Manager).
- Transport (Tunnel Éphémère Sécurisé) :
- Un tunnel SSH redirige les ports distants (9100 et 8081) vers l’hôte local de monitoring (19100 et 18081).
- Utilisation de la fonctionnalité EIC (EC2 Instance Connect Endpoint) pour sécuriser le flux au niveau de l’API AWS, sans clés SSH statiques à stocker ou exposer.
- Analyse & Restitution (Destination – Docker Local) :
- Prometheus : Scrape (collecte) les données issues du tunnel via la passerelle réseau host.docker.internal.
- Grafana : Centralise et propulse les tableaux de bord dynamiques pour l’analyse visuelle.
🚀 Guide de lancement rapide
rafraîchir la stack Docker locale avec la commande : docker compose up -d –force-recreate
Accès aux interfaces d’administration
Prometheus :
Prometheus : http://192.168.100.10:9091/targets
- Grafana : http://localhost:3000 (Identifiants par défaut : admin / admin)
Source de données (Data Source)
- Type : Prometheus
- URL interne : http://192.168.100.10:3000/
Tableaux de bord (Dashboards)
On retrouve sur le bureau Menu general Ici
- ID 1860 (Node Exporter Full) : Offre une visibilité système totale sur l’état de santé de la machine EC2 AWS.
- ID 14282 (cAdvisor Exporter) : Permet un suivi granulaire de la consommation de ressources de chaque Pod Kubernetes (WordPress).
📈 Approche DevOps : Industrialisation et Persistance
Pour passer d’un schéma de type « Laboratoire » à une infrastructure robuste de niveau Production, les axes d’améliorations suivants ont été implémentés :
1. Auto-healing du Tunnel (Résilience réseau)
Plutôt que d’initier des sessions SSH manuelles soumises aux coupures de connexions, l’utilisation de l’utilitaire autossh couplé à un service système Linux (systemd) permet de superviser l’état du tunnel EICE et de le relancer instantanément en tâche de fond en cas de micro-coupure réseau.
2. Persistance des Données (Volumes Docker)
Afin de ne pas perdre l’historique des métriques Prometheus ni les personnalisations des tableaux de bord Grafana lors d’un redémarrage ou d’une mise à jour de la stack de monitoring, des volumes nommés ou des montages liés (bind mounts) sont configurés.
- Point d’attention : Les dossiers hôtes locaux (./prometheus_data et ./grafana_data) doivent posséder les droits de lecture/écriture adéquats pour les UID des conteneurs (ex: sudo chown -R 472:472 ./grafana_data pour le moteur de Grafana).
3. Automatisation au boot (Systemd)
La stack locale est configurée pour démarrer automatiquement dès le lancement de la machine hôte. Le démon Docker est activé pour se lancer au démarrage du système :
Bash
sudo systemctl enable docker