171 lines
5.7 KiB
Markdown
171 lines
5.7 KiB
Markdown
# 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
|