Un système de monitoring puissant et simple pour surveiller plusieurs ordinateurs depuis une interface web centrale.
- 📊 Métriques en temps réel : CPU, RAM, Disque
- 🌐 Trafic réseau : Upload/Download avec vitesse instantanée
- 💻 Vue détaillée avec graphiques interactifs
- 📡 Protocoles réseau : TCP (ESTABLISHED, LISTEN, TIME_WAIT, CLOSE_WAIT) et UDP
- 🔗 Connexions actives : Liste détaillée avec IP locales/distantes, états, PID
- 🌐 Interfaces réseau : IPv4, IPv6, vitesse, état actif/inactif
- ⚙️ Top 30 processus par utilisation CPU
- 📈 Détails complets : PID, nom, CPU%, RAM%, état, utilisateur
- 🎯 Visualisation avec barres de progression
- 🎨 Design moderne avec icônes de PC personnalisées
- 📊 Graphiques interactifs (Chart.js) : CPU, RAM, réseau, disque
- 📱 Responsive : s'adapte à tous les écrans
- 🎭 Icônes distinctives par PC avec badges de statut (hors ligne/ en ligne)
- 🕒 Onglet Historique pour visualiser les 24 h+
- ⚡ Animations fluides et transitions
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Agent │─────▶│ Serveur │◀─────│ Agent │
│ (PC 1) │ 2s │ Central │ 2s │ (PC 2) │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
Interface Web
http://IP:5000
- Python 3.13.12 ou supérieur
- Connexion réseau entre les machines
- Ports : 5000 (serveur)
Linux/Mac :
git clone https://github.com/christ20351/VIGIL.git
cd VIGIL
chmod +x install.sh
./install.shWindows :
git clone https://github.com/christ20351/VIGIL.git
cd VIGIL
install.bat-
Cloner le projet
git clone https://github.com/christ20351/VIGIL.git cd VIGIL -
Installer les dépendances
pip install -r requirements.txt
-
Configurer
cp config.py server/config.py # Pour le serveur cp config.py agent/config.py # Pour les agents
-
Modifier la configuration
- Éditez
agent/config.py - Changez
SERVER_IP = "x.x.x.x"avec l'IP de votre serveur
- Éditez
-
Lancer
Serveur :
cd server python server.pyAgent (Linux avec sudo pour accès réseau complet) :
cd agent sudo python agent.pyAgent (Windows - Exécuter en tant qu'Administrateur) :
cd agent python agent.py
⚠️ Important : le fichier de donnéesmetrics.dbn'est pas inclus dans le dépôt. Il est généré automatiquement dansserver/db/metrics.dblors du premier démarrage du serveur. Chaque utilisateur/clône aura sa propre base vide, et le fichier est ignoré par Git grâce au.gitignoreci‑dessous.
| Paramètre | Défaut | Description |
|---|---|---|
SERVER_HOST |
"0.0.0.0" |
Interface d'écoute (0.0.0.0 = toutes) |
SERVER_PORT |
5000 |
Port du serveur web |
ALLOWED_AGENT_IPS |
[] |
IPs autorisées pour les agents (vide = toutes) |
ALLOWED_CLIENT_IPS |
[] |
IPs autorisées pour le navigateur (vide = toutes) |
ENABLE_AUTH |
False |
Activer l'authentification par token |
AUTH_TOKEN |
"..." |
Token secret si ENABLE_AUTH = True |
TIMEOUT |
60 |
Secondes avant de marquer un agent hors ligne (carte conservée en rouge) |
CPU_ALERT_THRESHOLD |
90 |
Seuil CPU (%) pour générer une alerte (voir aussi CPU_ALERT_DURATION) |
CPU_ALERT_DURATION |
30 |
Durée en secondes au-delà du seuil CPU pour déclencher l'alerte |
RAM_ALERT_THRESHOLD |
95 |
Seuil RAM (%) déclenchant une alerte instantanée |
DISK_ALERT_THRESHOLD |
100 |
Seuil disque (%) déclenchant une alerte instantanée |
Vous pouvez interroger les métriques enregistrées dans la base SQLite via l'API :
GET /api/history/{hostname}?hours=24
Le paramètre hours fixe la durée (en heures) de l'historique retourné. La réponse contient un tableau history de points horodatés utilisé par l'interface Web pour tracer les courbes CPU/RAM/DISK.
Exemple :
/api/history/WORKSTATION-01?hours=72renverra les derniers trois jours de données.
L'interface principale du dashboard propose désormais deux contrôles importants dans la barre latérale :
- Activité : permet de visualiser l'historique d'un agent sans ouvrir la modale (1 h/4 h/24 h/7 j).
- Notifications : affiche toutes les alertes reçues, organisées par agent et par jour. Les messages envoyés par le serveur sont archivés jusqu'à ce que la page soit rafraîchie.
Ces deux vues remplacent dynamiquement le contenu principal et un clic sur Dashboard ou Agents revient à l'affichage de la grille habituelle.
Lorsque le serveur ne reçoit plus de métriques pendant la durée de TIMEOUT, l'agent est simplement marqué comme hors ligne : sa carte reste visible, un badge rouge apparaît et le serveur envoie une alerte aux clients connectés.
| PROCESS_LIMIT | 100 | Nombre max de processus remontés |
| NETWORK_CONN_LIMIT | 100 | Nombre max de connexions réseau remontées |
| Paramètre | Défaut | Description |
|---|---|---|
SERVER_IP |
"192.168.188.120" |
IP du serveur central à atteindre |
SERVER_PORT |
5000 |
Port du serveur central |
UPDATE_INTERVAL |
1 |
Intervalle d'envoi des données (secondes) |
ENABLE_AUTH |
False |
Activer l'authentification par token |
AUTH_TOKEN |
"..." |
Token secret si ENABLE_AUTH = True |
TIMEOUT |
10 |
Timeout de connexion vers le serveur |
PROCESS_LIMIT |
100 |
Nombre max de processus à collecter |
NETWORK_CONN_LIMIT |
100 |
Nombre max de connexions réseau à collecter |
- Choisir un PC toujours allumé
- Installer le serveur :
./install.sh # Choisir option 1 (Serveur) - Noter l'IP affichée (ex:
x.x.x.x) - Ouvrir le port du serveur que vous avez défini (ex : port 5000) :
sudo ufw allow 5000/tcp # Linux # ou dans Pare-feu Windows
- Accéder à
http://x.x.x.x:5000
Sur chaque PC à surveiller :
./install.sh
# Choisir option 2 (Agent)
# Entrer l'IP du serveur : x.x.x.x- Ouvrir
http://x.x.x.x:5000 - Tous les PC doivent apparaître avec leurs icônes
- Cliquer sur "📊 Détails" pour voir les graphiques
Dans agent/config.py :
UPDATE_INTERVAL = T # Mise à jour toutes les T secondesDans server/server.py, ajouter avant @app.route('/update') :
ALLOWED_IPS = ['x.x.x.x', 'w.w.w.w', 'y.y.y.y']