Files
supervision/README.md
2026-04-27 12:03:08 +02:00

171 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/absent/déconnecté, temps de présence et temps actif, 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](https://rustup.rs/) (édition 2021, Rust 1.75+)
- [Visual Studio Build Tools](https://visualstudio.microsoft.com/fr/visual-cpp-build-tools/) avec la charge de travail **Développement Desktop en C++**
## Générer l'exécutable
```cmd
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)
```cmd
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 :
```json
{
"port": 5000
}
```
## Installation en tant que service Windows
L'invite de commande doit être lancée **en tant qu'administrateur**.
### Installer le service
```cmd
supervision.exe install
```
Le service est enregistré sous le nom `Supervision` avec un démarrage automatique.
### Démarrer / arrêter le service
```cmd
sc start Supervision
sc stop Supervision
```
Ou via le Gestionnaire des services Windows (`services.msc`).
### Désinstaller le service
```cmd
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é
### Tableau temps réel (aujourd'hui)
- Colonnes : Utilisateur, Statut, Dernière action, Actions (24h), Connecté depuis, Présence, Temps actif, Sessions
- 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, présence, temps actif, nombre de sessions
- **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
```cmd
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