📊 Infrastructure Monitoring : AWS (K3s) to Local (Docker)
Ce projet met en place une solution de monitoring hybride permettant de surveiller un cluster K3s (WordPress) hébergé sur AWS depuis une instance de monitoring locale.
🏗️ Architecture du flux de données
Le monitoring repose sur un pipeline sécurisé traversant un bastion SSH :
- Agents (Source – AWS EC2) :
- Node Exporter : Collecte les métriques système (CPU, RAM, Disque) de l’instance.
- cAdvisor : Analyse les statistiques d’utilisation des conteneurs du cluster K3s.
- Transport (Tunnel SSH) :
- Un tunnel sécurisé redirige les ports distants (
9100,8081) vers l’hôte local (19100,18081). - Utilisation de l’EIC (EC2 Instance Connect) pour une sécurité maximale sans clés statiques exposées.
- Un tunnel sécurisé redirige les ports distants (
- Analyse (Destination – Docker Local) :
- Prometheus : Scrape les données via la passerelle
host.docker.internal. - Grafana : Visualisation des données via des tableaux de bord dynamiques.
- Prometheus : Scrape les données via la passerelle
🚀 Lancement rapide
1. Ouvrir le tunnel
Bash
./tunnel.sh
2. Lancer la stack de monitoring
Bash
cd ~/terraform/monitoring
docker compose up -d
3. Accès aux interfaces
- Prometheus :
http://localhost:9091(Vérifier Status > Targets) - Grafana :
http://<IP_VM_HYPERV>:3000(Admin / Admin)
🛠️ Configuration Grafana
- Data Source : Prometheus (
http://prometheus:9090) - Dashboards recommandés :
- ID 1860 : Node Exporter Full (Vue système EC2)
- ID 14282 : cAdvisor Exporter (Vue Pods Kubernetes)
⏩ Prochaine étape : Rendre le monitoring persistant
Actuellement, si ta VM redémarre ou si la connexion SSH tombe, le monitoring s’arrête. Voici les deux axes d’amélioration pour la persistance :
1. Persistance du Tunnel (Auto-healing)
Utiliser Autossh au lieu d’un simple script Bash. Autossh est capable de détecter une coupure de tunnel et de le relancer automatiquement.
- Action : Installer
autosshet créer un servicesystemdpour le tunnel.
2. Persistance des données (Volumes Docker)
S’assurer que les données de Prometheus et Grafana ne sont pas perdues au redémarrage des conteneurs.
- Action : Nous avons déjà défini des volumes dans le
docker-compose.yml, mais il faut vérifier que les dossiers locaux (./prometheus_dataet./grafana_data) ont les bons droits d’écriture (chown 472:472pour Grafana).
3. Automatisation au démarrage (Systemd)
Créer un service Linux qui lance automatiquement le tunnel puis le Docker Compose au démarrage de ta VM Hyper-V.
Bash
# Exemple de commande pour activer Docker au boot
sudo systemctl enable docker