Skip to content

Nour-ad/SystemeSupervision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Système de Supervision Multi-Agents

Java License Status

Système de supervision distribué en temps réel pour la surveillance de machines via agents autonomes.


Table des Matières


Vue d'ensemble

Ce projet est un système de supervision distribué permettant de surveiller en temps réel plusieurs machines via des agents autonomes. Les données (CPU, RAM, Disque) sont collectées, centralisées et visualisées dans une interface graphique intuitive.

Problématiques résolues :

  • Surveillance simultanée de plusieurs machines
  • Détection précoce des anomalies (CPU/RAM/Disque)
  • Centralisation des métriques dans une interface unique
  • Alertes instantanées en cas de dépassement de seuils

Fonctionnalités

Agents de Surveillance

  • Lecture des métriques système en temps réel (CPU, RAM, Disque)
  • Envoi automatique des données toutes les 5 secondes (UDP)
  • Détection locale des anomalies avec seuils configurables
  • Alertes instantanées via TCP en cas de dépassement

Serveur Central

  • Réception des données de multiples agents (UDP)
  • Réception des alertes critiques (TCP)
  • Stockage en mémoire + historique complet
  • Exposition des données via RMI pour l'interface graphique
  • Nettoyage automatique des agents inactifs (timeout 10s)

Interface Graphique

  • Dashboard temps réel avec vue d'ensemble des agents
  • Graphiques d'évolution (CPU, RAM, Disque)
  • Tableau des alertes avec filtrage par agent
  • Export des données (CSV) et rapports (TXT/PDF)
  • Authentification multi-utilisateurs (Admin/Utilisateur)
  • Calcul de statistiques (moyennes, min, max)

Architecture

┌─────────────┐         ┌──────────────┐        ┌─────────────────┐
│   AGENTS    │         │   SERVEUR    │        │   INTERFACE     │
│  (Machines) │ ──UDP──>│   CENTRAL    │ ──RMI─>│   GRAPHIQUE     │
│             │ ──TCP──>│              │        │                 │
└─────────────┘         └──────────────┘        └─────────────────┘
  Surveillance          Centralisation            Visualisation

Composants :

Agent

  • MoniteurSysteme : Lecture des métriques (OperatingSystemMXBean)
  • EnvoyeurDonnees : Communication UDP (envoi toutes les 5s)
  • DetecteurAlertes : Détection et alertes TCP

Serveur

  • RecepteurUDP : Collecte des données normales
  • ServeurTCP : Réception des alertes urgentes
  • ServeurRMI : Exposition API pour l'interface

Interface

  • MainWindow : Fenêtre principale
  • PanneauAgents : Liste des agents en temps réel
  • PanneauGraphiques : Visualisation graphique

Technologies

Technologie Usage
Java 17+ Langage principal
Java RMI Communication serveur-interface
UDP Transmission rapide des données
TCP Transmission fiable des alertes
Java Swing Interface graphique
JFreeChart Graphiques temps réel
OperatingSystemMXBean Lecture métriques système

Installation

Prérequis

  • Java JDK 17 ou supérieur
  • Git (pour cloner le projet)

Étapes

  1. Cloner le repository
git clone https://github.com/votre-username/SystemeSupervision.git
cd SystemeSupervision
  1. Compiler le projet
javac -d out src/**/*.java
  1. Créer les JAR exécutables (optionnel)
# Pour le serveur
jar cfe ServeurCentral.jar serveur.ServeurCentral -C out .

# Pour l'agent
jar cfe Agent.jar agent.Agent -C out .

# Pour l'interface
jar cfe Interface.jar interface_utilisateur.MainWindow -C out .

Utilisation

Démarrer le Serveur Central

# Depuis le code source
java -cp out serveur.ServeurCentral

# Ou depuis le JAR
java -jar ServeurCentral.jar

Commandes disponibles :

  • list : Afficher les agents connectés
  • alertes : Afficher les alertes reçues
  • quit : Arrêter le serveur

Démarrer un Agent (sur chaque machine à surveiller)

# Depuis le code source
java -cp out agent.Agent

# Ou depuis le JAR
java -jar Agent.jar

# Avec un nom personnalisé
java -jar Agent.jar MonServeur1

Commandes :

  • quit : Arrêter l'agent

Lancer l'Interface Graphique

# Depuis le code source
java -cp out interface_utilisateur.MainWindow

# Ou depuis le JAR
java -jar Interface.jar

Identifiants par défaut :

  • Admin : admin / admin123
  • Utilisateur : user / user123

Configuration

Le fichier utils/Configuration.java contient les paramètres :

// Adresse du serveur
public static final String SERVEUR_HOST = "localhost";

// Ports
public static final int PORT_UDP = 9876;    // Données normales
public static final int PORT_TCP = 9999;    // Alertes
public static final int PORT_RMI = 1099;    // Interface graphique

// Intervalles
public static final int INTERVALLE_ENVOI = 5000;  // 5 secondes

// Seuils d'alertes
public static final double SEUIL_CPU = 80.0;      // 80%
public static final double SEUIL_MEMOIRE = 85.0;  // 85%
public static final double SEUIL_DISQUE = 90.0;   // 90%

Captures d'écran

Dashboard Principal

Dashboard

Graphiques d'Évolution

Graphiques

Tableau des Alertes

Alertes


Diagramme d'Architecture

┌─────────────────────────────────────────────────────────┐
│                    AGENT (Machine)                      │
│  ┌────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │ Moniteur   │→│  Envoyeur    │→│  Détecteur    │  │
│  │ Système    │  │  Données     │  │  Alertes      │  │
│  └────────────┘  └──────────────┘  └───────────────┘  │
└────────────┬─────────────┬──────────────────────────────┘
             │ UDP         │ TCP
             ↓             ↓
┌─────────────────────────────────────────────────────────┐
│              SERVEUR CENTRAL                            │
│  ┌────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │ Récepteur  │  │  Serveur     │  │  Serveur      │  │
│  │ UDP        │  │  TCP         │  │  RMI          │  │
│  └────────────┘  └──────────────┘  └───────────────┘  │
│         │              │                   │            │
│         └──────────────┴───────────────────┘            │
│                        ↓                                │
│         Collections Partagées (Map, List)               │
└─────────────────────────┬───────────────────────────────┘
                          │ RMI
                          ↓
┌─────────────────────────────────────────────────────────┐
│           INTERFACE GRAPHIQUE                           │
│  ┌────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │ Dashboard  │  │  Graphiques  │  │  Alertes      │  │
│  └────────────┘  └──────────────┘  └───────────────┘  │
└─────────────────────────────────────────────────────────┘

Développement

Structure du Code

src/
├── agent/              # Agents de surveillance
├── serveur/            # Serveur central
├── interface_utilisateur/  # Interface graphique
├── modele/             # Classes de données (POJOs)
└── utils/              # Utilitaires (config, logger, export)

Ajouter un Nouvel Agent

  1. Compiler le projet
  2. Copier le JAR sur la nouvelle machine
  3. Modifier Configuration.java si nécessaire (adresse serveur)
  4. Lancer l'agent

Contribution

Les contributions sont les bienvenues ! Pour contribuer :

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/amelioration)
  3. Commit les changements (git commit -m 'Ajout fonctionnalité X')
  4. Push vers la branche (git push origin feature/amelioration)
  5. Ouvrir une Pull Request

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


Auteur

  • AYADI Nour El Houda - Ingénieure en Data Science et IA - GitHub

** Si ce projet vous a aidé, n'hésitez pas à lui donner une étoile !**


---

##  Fichiers Additionnels Recommandés

### **LICENSE** (Exemple MIT)

MIT License

Copyright (c) 2025 AYADI Nour El Houda

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Système de supervision distribué multi-agents en Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors