SuperVision
Outil de supervision système avec interface web, écrit en Rust. Surveille CPU, RAM, disques et processus en temps réel, avec alertes par email et suivi des utilisateurs Amadea.
Fonctionnalités
- Dashboard temps réel — CPU, RAM, disques, uptime, statut par code couleur (ok / warning / critical)
- Surveillance de processus — détection par pattern, alerte si processus arrêté, seuil mémoire configurable
- Alertes email (SMTP) — envoi automatique avec cooldown configurable pour éviter le spam
- Suivi utilisateurs Amadea — analyse des logs
aweventsetisoft, statuts actif/inactif/absent/déconnecté, temps de présence et temps actif, compteur d'erreurs par utilisateur (logsisoftniveau ERROR), graphe d'activité horaire, hebdomadaire et mensuel, historique par utilisateur - Interface de configuration — seuils, SMTP, processus, port, mot de passe admin, tout modifiable via l'UI
- Service Windows — installation en tant que service système avec démarrage automatique
Prérequis
- Rust (édition 2021, Rust 1.75+)
- Visual Studio Build Tools avec la charge de travail Développement Desktop en C++
Générer l'exécutable
cd SuperVisionRust
cargo build --release
L'exécutable est généré dans : target\release\supervision.exe
Déploiement
Copier les éléments suivants dans un dossier de déploiement (ex: C:\SuperVision\) :
supervision.exe
static\
templates\
Lancer l'application
En mode console (test / debug)
supervision.exe
L'interface web est accessible sur : http://localhost:5000
Identifiants par défaut : admin / admin — à changer immédiatement dans les paramètres.
Changer le port
Dans les paramètres de l'interface web (/settings), ou en éditant data\config.json avant le premier lancement :
{
"port": 5000
}
Installation en tant que service Windows
L'invite de commande doit être lancée en tant qu'administrateur.
Installer le service
supervision.exe install
Le service est enregistré sous le nom Supervision avec un démarrage automatique.
Démarrer / arrêter le service
sc start Supervision
sc stop Supervision
Ou via le Gestionnaire des services Windows (services.msc).
Désinstaller le service
sc stop Supervision
supervision.exe uninstall
Structure des données
Au premier lancement, un dossier data\ est créé automatiquement dans le même répertoire que l'exécutable :
data\
config.json # Configuration complète (port, seuils, SMTP, admin...)
alerts.json # Historique des alertes (500 entrées max)
Configuration SMTP
Dans l'interface web (/settings), section SMTP :
| Champ | Description |
|---|---|
| Serveur | Adresse du serveur SMTP (ex: smtp.office365.com) |
| Port | Généralement 587 (TLS) ou 465 (SSL) |
| Utilisateur | Adresse email d'envoi |
| Mot de passe | Mot de passe ou token d'application |
| Destinataires | Emails séparés par des virgules |
Un bouton Tester permet de vérifier la configuration sans attendre une alerte réelle.
Surveillance des utilisateurs Amadea
Renseigner le chemin des logs Amadea dans les paramètres (/settings) :
C:\ProgramData\ISoft\Amadea Web 8 x64\data\logs
SuperVision parse les fichiers awevents_YY-MM-DD_* et isoft_YY-MM-DD_* pour construire la liste des utilisateurs connectés et leur activité.
Statuts utilisateurs
| Statut | Condition |
|---|---|
| actif | action dans les N dernières minutes (défaut : 5 min) |
| inactif | pas d'action depuis N à M minutes (défaut : 5 – 30 min) |
| absent | pas d'action depuis plus de M minutes, sans déconnexion explicite (défaut : > 30 min) |
| déconnecté | déconnexion explicite détectée dans les logs |
Les seuils sont configurables dans les paramètres (/settings, section Seuils utilisateurs) :
- Actif si : délai max depuis la dernière action pour être considéré actif
- Inactif si : délai au-delà duquel l'utilisateur devient inactif
- Seuil de pause : durée minimale d'inactivité comptée comme une pause dans le calcul du temps actif
Temps de présence et temps actif
Pour chaque utilisateur SuperVision calcule :
- Présence — durée entre la première et la dernière action du jour
- Temps actif — présence moins les pauses dépassant le seuil configuré
Erreurs isoft
SuperVision analyse les fichiers isoft_* pour compter les lignes de niveau ERROR. Chaque erreur est rattachée à un utilisateur via le champ ISI=<session_id> présent dans le nom du thread, et la correspondance session → login est établie grâce aux événements OpenUserSession et CloseUserSession.
Le nombre d'erreurs est affiché :
- Dans le tableau temps réel et le tableau jour historique (colonne « Erreurs », badge rouge si > 0)
- Dans le panneau historique utilisateur (colonne « Erreurs » + tooltip sur les barres)
- Dans les tooltips des graphiques 7/30 jours (total d'erreurs du jour)
Tableau temps réel (aujourd'hui)
- Colonnes : Utilisateur, Statut, Dernière action, Actions (24h), Erreurs, Présence / Actif, Depuis
- Tri : actif → inactif → absent → déconnecté, puis dernière action la plus récente en premier
Graphiques d'activité
- 7 jours et 30 jours — pic d'utilisateurs simultanés par jour
- Cliquer sur une barre charge le tableau des utilisateurs de ce jour : login, première/dernière action, nombre d'actions, erreurs, présence, temps actif, nombre de sessions
- Tooltip sur les barres affiche le nombre d'utilisateurs et le total d'erreurs du jour
- Cliquer sur un utilisateur (tableau du jour ou tableau temps réel) affiche son historique individuel sur 7 ou 30 jours
Détection des fichiers de logs
SuperVision gère les deux cas du serveur HDS :
- Log du jour sans date dans le nom (
awevents.log) — log actif courant - Log du jour avec date dans le nom et zippé (
awevents_26-04-13_1.log.gz) — rotation en cours de journée (forte activité)
Lancer les tests
cargo test
Sécurité
- Sessions HTTP sécurisées avec cookie de session
- Mots de passe stockés avec bcrypt
- En-têtes de sécurité HTTP automatiques (
X-Frame-Options,X-XSS-Protection,X-Content-Type-Options) - Toutes les routes (sauf
/login) nécessitent une authentification