4.6 KiB
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/déconnecté, graphe d'activité horaire et hebdomadaire - 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é.
Tableau temps réel (aujourd'hui)
- Colonnes : Utilisateur, Statut, Dernière action, Actions (24h), Depuis
- Tri : statut (actif → inactif → déconnecté), puis dernière action la plus récente en premier au sein de chaque groupe
Graphique 7 derniers jours
- Affiche le pic d'utilisateurs simultanés par jour
- Cliquer sur une barre charge le tableau des utilisateurs de ce jour : Utilisateur, Dernière utilisation, Actions (jour), Durée de présence (première → dernière action)
- Tri par nombre d'actions décroissant
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é)
Les seuils de statut (actif / inactif / déconnecté) sont configurables en minutes.
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