Files
supervision/README.md
2026-04-20 16:47:15 +02:00

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 awevents et isoft, 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

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