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 : fil rouge en 3 actes.
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
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
- stocks_approvisionnement : Inventaires critiques
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.sqlstocks_approvisionnement.sql
Données (insertion) :
6. data-personel.sql
7. data-meteo.sql
8. data-materiel.sql
9. data-com-satellite.sql
10. data-stocks.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 (all-in-one)
Section intitulée « Architecture de déploiement (all-in-one) »Tout l’Acte 1 tourne sur une seule VM, monitoring (TAAF-MONITORING-001, IP_VM2). Le
dépôt monitoring déploie en un docker compose le SI observé ET l’observabilité :
- SI observé : PostgreSQL
postgres-af(basebase_af, port 5432), NextCloud (8081) - Observabilité : Grafana (3000), Prometheus (9090), Loki (3100), Alloy, Alertmanager (9093), cAdvisor, exporters
Tous ces services partagent le réseau Docker interne de la VM : entre eux, ils se joignent par
leur nom de service Docker (postgres-af, prometheus, loki…), jamais par IP ni localhost.
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_VM2:3000- User :
admin - Password :
AdminTAAF2024!
- User :
- Prometheus :
http://IP_VM2:9090
Connexion à la base PostgreSQL (client SQL, depuis votre poste) :
- PostgreSQL Alfred Faure :
IP_VM2:5432(user:taaf_admin, password:TaafPostgres2024!, base :base_af)- Tables disponibles dans
base_af:personnel_base,conditions_meteo,equipements_critiques,communications_satellite,stocks_approvisionnement
- Tables disponibles dans
Dans les configurations Grafana (datasources) — tout en nom de service Docker :
- Prometheus :
http://prometheus:9090 - PostgreSQL Alfred Faure :
postgres-af:5432 - Loki :
http://loki:3100
Ports utilisés
Section intitulée « Ports utilisés »3000: Interface Grafana9090: Interface Prometheus3100: Service Loki5432: PostgreSQL Alfred Faure (toutes les bases)8080: cAdvisor (métriques conteneurs)8081: NextCloud (UI)9093: Alertmanager9187: postgres_exporter9100: node_exporter
Vérification cAdvisor
Section intitulée « Vérification cAdvisor »cAdvisor est automatiquement déployé avec Docker Compose et collecte les métriques de tous les conteneurs Docker.
# Vérifier que cAdvisor fonctionnedocker ps | grep cadvisor
# Accéder à l'interface web cAdvisorcurl http://localhost:8080/containers/
# Vérifier les métriques Prometheuscurl http://localhost:8080/metrics
# Tester depuis Prometheus# Ouvrir http://localhost:9090 → Explorer → Rechercher "container_"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