Skip to content

OSBrainer/SentinelGrid-Distributed-Monitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Système de Surveillance Distribué (Java, RMI, UDP, TCP)

Ce projet est une plateforme de surveillance distribuée permettant de collecter, traiter et visualiser en temps réel les performances système (CPU, RAM, Disque) de plusieurs machines distantes.

🏗️ Architecture Globale

Le système repose sur une architecture 3-Tier assurant une séparation nette entre la collecte, le traitement et la visualisation.

Agent de Surveillance (Java) : Collecte périodiquement les informations matérielles via la bibliothèque OSHI et les transmet au serveur central. Serveur Central (Spring Boot) : Centralise les données de plusieurs agents, gère la persistance et fournit des services d'accès via RMI et REST. Interface Utilisateur (Web) : Dashboard dynamique permettant le monitoring en temps réel et le contrôle des agents distants.

📡 Protocoles de Communication

Le système utilise une stratégie hybride pour optimiser la performance et la fiabilité. ProtocolePortUsageJustification TechniqueUDP5000Flux de métriques périodiquesPerformance maximale et faible overhead pour les données temporelles fréquentesTCP5001Alertes critiquesGarantie de livraison (Handshake) pour les situations de dépassement de seuilJava RMI1099Contrôle à distanceInvocation de méthodes distantes pour configurer les agents sans redémarrageREST8080Dashboard WebInteropérabilité entre le Backend Java et le Frontend Web

📂 Structure des Modules

  1. Shared Module (org.example.shared) Contient les contrats et objets communs nécessaires à la sérialisation et aux appels distants.

MetricSnapshot : Un Java Record sérialisable transportant l'état du système (CPU, RAM, Disque). IAgentControl : Interface RMI définissant les méthodes de configuration (intervalles, seuils).

  1. Agent Module (org.example.agent) Gère l'exécution multi-threadée pour la collecte et la transmission.

AgentApp.java : Utilise OSHI pour lire le matériel et gère le scheduler pour l'envoi UDP. Il surveille les seuils et ouvre une socket TCP vers TcpAlertServer en cas de dépassement.

  1. Server Module (org.example.server) Cœur intelligent du système basé sur Spring Boot.

UdpServer.java : Thread écoutant sur le port 5000 pour persister les métriques dans PostgreSQL. TcpAlertServer.java : Thread écoutant sur le port 5001 pour logger les alertes critiques. MetricController.java : API REST pour le dashboard et pont vers les commandes RMI. SecurityConfig.java : Gestion de l'authentification et des rôles (ADMIN/VIEWER).

🛠️ Installation et Utilisation

Prérequis

Java 25 PostgreSQL 15+ IntelliJ IDEA (recommandé)

Lancement

Base de données : Configurer une instance PostgreSQL et créer la base distributed_monitor. Serveur : Lancer ServerApplication.java pour initialiser les services Spring Boot et les écouteurs réseau. Agents : Lancer AgentApp.java. Pour simuler plusieurs agents, activer "Allow multiple instances" dans IntelliJ et passer un ID unique en argument (ex: Agent-WEB).

Test de Charge (Stress Test) Pour valider le mécanisme d'alerte TCP, simulez une charge CPU élevée : bashstress --cpu 8 --timeout 30s Dès que le seuil de 80.0% est dépassé, le serveur affichera [ALERT RECEIVED] dans la console.

📊 Modélisation UML Diagramme de Classes Détaille la structure des packages et les relations entre les interfaces RMI et les entités JPA. Diagrammes de Séquence

Flux de Données : OSHI → UDP → PostgreSQL → TCP Alert. Contrôle RMI : Dashboard → REST → RMI Call → Configuration Agent.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors