Monitoring - Système de Supervision TAAF
Acte 1 — Mise en lumière
Section intitulée « Acte 1 — Mise en lumière »Port-aux-Français, base perdue dans l’océan Indien. Un service tombe — et personne ne le sait avant qu’un chercheur ne trouve porte close. La DSI des TAAF pilote à l’aveugle.
Votre première mission : lui rendre la vue. Vous construisez la visibilité de l’infrastructure — métriques, dashboards, logs centralisés, alertes — sans laquelle aucune détection n’est possible.
→ Le parcours complet : la progression et les deux parcours.
Vue d’ensemble
Section intitulée « Vue d’ensemble »Le parcours Monitoring vous apprend à mettre en place une solution complète de supervision et d’observabilité pour les bases polaires TAAF. Vous allez déployer et configurer une stack de monitoring moderne avec Prometheus, Grafana et Loki.
Architecture de la Solution
Section intitulée « Architecture de la Solution »Stack de Monitoring
Section intitulée « Stack de Monitoring »La solution de supervision s’appuie sur les technologies suivantes :
- PostgreSQL (bases multiples) : Stockage des données opérationnelles
- Prometheus : Collecte et stockage des métriques
- Alertmanager : Gestion et routage des alertes
- Grafana : Visualisation et dashboards
- Loki : Agrégation et analyse des logs
- Alloy : Agent de collecte unifié (Grafana Agent)
- cAdvisor : Collecte des métriques des conteneurs Docker
- Caddy : Serveur web et proxy inverse avec SSL automatique
- Exporters : postgres_exporter, node_exporter
Architecture Simplifiée
Section intitulée « Architecture Simplifiée »graph LR subgraph "Stack Monitoring (Observabilité)" PG[(PostgreSQL<br/>Bases TAAF)] -->|métriques|PROM[Prometheus] NC[NextCloud] -->|logs|ALLOY[Grafana Alloy] PG -->|logs|ALLOY ALLOY --> LOKI[Loki] PROM --> GRAF[Grafana] LOKI --> GRAF PROM --> AM[Alertmanager] AM -->|notifications|DISC[Discord/Slack] end classDef monitoring fill:#99ff99,stroke:#333,stroke-width:2px classDef infra fill:#ffcc99,stroke:#333,stroke-width:2px classDef alert fill:#cc99ff,stroke:#333,stroke-width:2px class PROM,ALLOY,LOKI,GRAF monitoring class PG,NC infra class AM,DISC alert
Métriques Surveillées
Section intitulée « Métriques Surveillées »- Disponibilité : Statut UP/DOWN des bases
- Performance : Temps de réponse, throughput
- Ressources : CPU, RAM, stockage
- Connexions : Nombre de sessions actives
- Erreurs : Logs d’erreurs et exceptions
Alertes Configurées
Section intitulée « Alertes Configurées »Via Alertmanager (TP4) :
- Base de données inaccessible
- Performances dégradées
- Espace disque critique
- Erreurs critiques dans les logs
- Notifications Discord/Slack/Email
Base de Données Surveillée
Section intitulée « Base de Données Surveillée »Le système gère une seule instance PostgreSQL (postgres-af) exposant une unique base de données base_af. Toutes les données opérationnelles des bases polaires y sont regroupées sous forme de tables :
Tables de la base base_af
Section intitulée « Tables de la base base_af »- personnel_base : Gestion du personnel, rotations et congés
- conditions_meteo : Relevés météorologiques et alertes
- equipements_critiques : Inventaire et maintenance du matériel
- communications_satellite : Logs des communications satellite
Scripts SQL d’initialisation
Section intitulée « Scripts SQL d’initialisation »Les scripts suivants doivent être exécutés dans l’ordre depuis le repository kds-formation/sql sur la base base_af :
Schémas (création des tables) :
personnel_base.sqlconditions_meteo.sqlequipements_critiques.sqlcommunications_satellite.sql
Données (insertion) :
5. data-personel.sql
6. data-meteo.sql
7. data-materiel.sql
8. data-com-satellite.sql
Ordre des TPs
Section intitulée « Ordre des TPs »IMPORTANT : Les TPs doivent être réalisés dans l’ordre strict suivant :
-
- Créer dashboard de supervision des conteneurs Docker
- Livrable : 1 dashboard métriques système
-
- Ajouter dashboards données métier TAAF
- Livrable : 2 dashboards supplémentaires (Communications + RH)
-
- Intégrer la dimension logs
- Livrable : Dashboards hybrides logs+métriques
-
- Configuration alertes multi-sources
- Livrable : Alertmanager + webhooks Discord/Google Chat
-
TP Bonus (Optionnel)
- Monitoring production électrique La Réunion
Consultez l’ordre détaillé des TPs pour plus d’informations.
Prérequis
Section intitulée « Prérequis »Système requis
Section intitulée « Système requis »- Docker Desktop ou Docker Engine
- Docker Compose
- 8 GB RAM minimum (16 GB recommandé)
- 20 GB d’espace disque libre
Architecture de déploiement (deux VMs)
Section intitulée « Architecture de déploiement (deux VMs) »L’Acte 1 est réparti sur deux VMs depuis le split apps/monitoring :
- VM
apps(TAAF-APPS-001,IP_APPS) — le SI observé et ses collecteurs, déployés pardocker-compose-apps.yml: PostgreSQLpostgres-af(5432), NextCloud (8081), Adminer (8080), Alloy (collecteur de logs), cAdvisor (8082), node-exporter (9100), postgres-exporter (9187). Lelog-generator(profilscenario) ne fait pas partie de l’Acte 1 : il sert au seeding de l’incident (Acte 0 · Phase 4) que l’Acte 2 SIEM détecte — inutile pour superviser ici. - VM
monitoring(TAAF-MONITORING-001,IP_VM1) — le plan de contrôle d’observabilité, déployé pardocker-compose.yml: Grafana (3000), Prometheus (9090), Loki (3100), Alertmanager (9093), Caddy.
Au sein d’une même VM, les services se joignent par leur nom de service Docker
(postgres-af, prometheus, loki…). Entre les deux VMs, on passe par l’IP : Prometheus
(monitoring) scrape les exporters d’apps sur IP_APPS, et Alloy (apps) pousse vers Loki
(monitoring) sur IP_MONITORING:3100.
Démarrage Rapide
Section intitulée « Démarrage Rapide »Installation
Section intitulée « Installation »# Cloner le projetgit clone https://gitlab.com/kds-formation/monitoringcd monitoring
# Démarrer tous les servicesdocker compose up -d
# Vérifier le statutdocker compose psAccès aux interfaces
Section intitulée « Accès aux interfaces »Depuis votre poste de travail (navigateur) :
- Grafana :
http://IP_VM1:3000- User :
admin - Password :
AdminTAAF2024!
- User :
- Prometheus :
http://IP_VM1:9090
Connexion à la base PostgreSQL (client SQL, depuis votre poste) :
- PostgreSQL australe (
base_af) :IP_APPS:5432(VMapps; user:taaf_admin, password:AdminTAAF2024!, base :base_af)- Tables disponibles dans
base_af:personnel_base,conditions_meteo,equipements_critiques,communications_satellite
- Tables disponibles dans
Dans les configurations Grafana (datasources) — tout en nom de service Docker :
- Prometheus :
http://prometheus:9090 - Prometheus / Loki / Alertmanager (même VM que Grafana) : nom de service Docker
- PostgreSQL
base_af(VMapps) :IP_APPS:5432
Ports utilisés
Section intitulée « Ports utilisés »VM monitoring (plan de contrôle d’observabilité) :
3000: Interface Grafana9090: Interface Prometheus3100: Service Loki9093: Alertmanager
VM apps (SI observé + collecteurs) :
5432: PostgreSQL australebase_af(toutes les bases)8080: Adminer (UI SQL)8081: NextCloud (UI)8082: cAdvisor (métriques conteneurs)9187: postgres_exporter9100: node_exporter12345: Alloy (collecteur de logs)
Vérification cAdvisor
Section intitulée « Vérification cAdvisor »cAdvisor tourne sur la VM apps (déployé par docker-compose-apps.yml) et collecte les métriques de tous les conteneurs Docker de cette VM.
# Sur la VM apps (vagrant ssh apps) :docker ps | grep cadvisor
# Interface / métriques cAdvisor (port 8082 sur apps)curl http://localhost:8082/containers/curl http://localhost:8082/metrics
# Depuis Prometheus (VM monitoring) : http://IP_VM1:9090 → Explorer → "container_"# (Prometheus scrape cAdvisor sur IP_APPS:8082)Métriques cAdvisor disponibles :
container_cpu_usage_seconds_total: Utilisation CPU par conteneurcontainer_memory_usage_bytes: Utilisation mémoirecontainer_network_receive_bytes_total: Octets réseau reçuscontainer_network_transmit_bytes_total: Octets réseau envoyéscontainer_fs_usage_bytes: Utilisation disque
Ces métriques sont utilisées dans le TP1 pour créer le dashboard de supervision des conteneurs.
Commandes Utiles
Section intitulée « Commandes Utiles »# Démarrer les servicesdocker compose up -d
# Voir les logs d'un service spécifiquedocker compose logs -f grafanadocker compose logs -f prometheus
# Voir les logs de tous les servicesdocker compose logs -f
# Arrêter les servicesdocker compose down
# Nettoyer (attention: supprime les données)docker compose down -v
# Redémarrer un service spécifiquedocker compose restart grafana
# Accéder à la base base_afdocker exec -it postgres-af psql -U taaf_admin -d base_af
# Lister les tables de base_afdocker exec -it postgres-af psql -U taaf_admin -d base_af -c "\dt"
# Interroger une tabledocker exec -it postgres-af psql -U taaf_admin -d base_af -c "SELECT COUNT(*) FROM communications_satellite;"docker exec -it postgres-af psql -U taaf_admin -d base_af -c "SELECT COUNT(*) FROM personnel_base;"Dépannage
Section intitulée « Dépannage »Problèmes courants
Section intitulée « Problèmes courants »Services qui ne démarrent pas :
# Vérifier les ports utilisésnetstat -tulpn | grep -E ':(3000|9090|5432)'
# Voir les logs d'erreurdocker compose logs grafanadocker compose logs prometheusDonnées manquantes :
# Réinitialiser les données PostgreSQLdocker compose down -vdocker compose up -dPerformance lente :
- Vérifier la RAM disponible (minimum 8 GB)
- Augmenter les limites Docker si nécessaire
Évaluation et Rendu
Section intitulée « Évaluation et Rendu »Format obligatoire
Section intitulée « Format obligatoire »Plateforme : Moodle de l’Université de la Réunion
Format : nom-prénom-promo.PDF (exemple: dupont-marie-m2info.PDF)
PÉNALITÉ : -5 points pour non-respect du nommage
Critères de qualité du rapport
Section intitulée « Critères de qualité du rapport »Lisibilité et compréhensibilité = 15% de la note finale
- Police : 11pt minimum (12pt recommandé)
- Structure : Titres clairs, sections organisées
- Images : Captures d’écran nettes et contrastées
- Code : Formatage correct des requêtes SQL/PromQL
- Orthographe : Relecture obligatoire
Un rapport illisible sera sanctionné même si le contenu technique est correct.
Ressources
Section intitulée « Ressources »Repository GitLab
Section intitulée « Repository GitLab »- monitoring - Code source et configuration
Documentation technique
Section intitulée « Documentation technique »Documentation externe
Section intitulée « Documentation externe »Prochaines Étapes
Section intitulée « Prochaines Étapes »- Consulter l’ordre des TPs
- Lire la présentation du projet
- Commencer par le TP1 - Métriques Grafana