monitoring

📊 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 :

  1. 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.
  2. 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.
  3. 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.

🚀 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 autossh et créer un service systemd pour 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_data et ./grafana_data) ont les bons droits d’écriture (chown 472:472 pour 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
Retour en haut