Système de supervision distribué en temps réel pour la surveillance de machines via agents autonomes.
- Vue d'ensemble
- Fonctionnalités
- Architecture
- Technologies
- Installation
- Utilisation
- Configuration
- Captures d'écran
- Contribution
- Licence
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.
- 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
- 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
- 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)
- 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)
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ AGENTS │ │ SERVEUR │ │ INTERFACE │
│ (Machines) │ ──UDP──>│ CENTRAL │ ──RMI─>│ GRAPHIQUE │
│ │ ──TCP──>│ │ │ │
└─────────────┘ └──────────────┘ └─────────────────┘
Surveillance Centralisation Visualisation
- MoniteurSysteme : Lecture des métriques (OperatingSystemMXBean)
- EnvoyeurDonnees : Communication UDP (envoi toutes les 5s)
- DetecteurAlertes : Détection et alertes TCP
- RecepteurUDP : Collecte des données normales
- ServeurTCP : Réception des alertes urgentes
- ServeurRMI : Exposition API pour l'interface
- MainWindow : Fenêtre principale
- PanneauAgents : Liste des agents en temps réel
- PanneauGraphiques : Visualisation graphique
| 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 |
- Java JDK 17 ou supérieur
- Git (pour cloner le projet)
- Cloner le repository
git clone https://github.com/votre-username/SystemeSupervision.git
cd SystemeSupervision- Compiler le projet
javac -d out src/**/*.java- 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 .# Depuis le code source
java -cp out serveur.ServeurCentral
# Ou depuis le JAR
java -jar ServeurCentral.jarCommandes disponibles :
list: Afficher les agents connectésalertes: Afficher les alertes reçuesquit: Arrêter le serveur
# 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 MonServeur1Commandes :
quit: Arrêter l'agent
# Depuis le code source
java -cp out interface_utilisateur.MainWindow
# Ou depuis le JAR
java -jar Interface.jarIdentifiants par défaut :
- Admin :
admin/admin123 - Utilisateur :
user/user123
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%┌─────────────────────────────────────────────────────────┐
│ 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 │ │
│ └────────────┘ └──────────────┘ └───────────────┘ │
└─────────────────────────────────────────────────────────┘
src/
├── agent/ # Agents de surveillance
├── serveur/ # Serveur central
├── interface_utilisateur/ # Interface graphique
├── modele/ # Classes de données (POJOs)
└── utils/ # Utilitaires (config, logger, export)
- Compiler le projet
- Copier le JAR sur la nouvelle machine
- Modifier
Configuration.javasi nécessaire (adresse serveur) - Lancer l'agent
Les contributions sont les bienvenues ! Pour contribuer :
- Fork le projet
- Créer une branche (
git checkout -b feature/amelioration) - Commit les changements (
git commit -m 'Ajout fonctionnalité X') - Push vers la branche (
git push origin feature/amelioration) - Ouvrir une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- 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.


