Instructions de compilation (locale + cross-compilation Windows), deploiement, stack technique, migration depuis Python. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Supervision — Monitoring Systeme Windows
Outil de surveillance systeme avec interface web securisee. Surveille CPU, RAM, disques et processus specifiques (JVM, Nginx, Amadea Web 8 x64). Envoie des alertes email lorsque les seuils configures sont depasses.
Binaire natif Rust — aucune dependance runtime, ~6 Mo.
Fonctionnalites
- Dashboard temps reel : CPU, RAM, disques, processus surveilles (rafraichissement auto)
- Alertes email : envoi automatique quand un seuil est depasse, avec cooldown anti-spam
- Configuration complete via l'interface :
- Seuils d'alerte (CPU, RAM, disque)
- Frequence de verification (en minutes)
- Serveur SMTP + test d'envoi integre
- Ajout/suppression de processus a surveiller
- Port de l'application
- Mot de passe administrateur
- Securite : authentification par login/mot de passe, rate limiting anti-bruteforce, en-tetes HTTP securises
- Historique des alertes consultable dans l'interface
Installation rapide (executable)
Pre-requis
- Windows 10/11 ou Windows Server 2016+
- Acces administrateur (pour le firewall et l'installation en service)
Etapes
-
Copier les fichiers suivants dans un dossier, par exemple
C:\supervision\:supervision.exe templates\ (dossier complet) static\ (dossier complet) -
Lancer l'executable :
C:\supervision\supervision.exe -
Ouvrir le navigateur a l'adresse :
http://localhost:5000 -
Se connecter avec les identifiants par defaut :
- Identifiant :
admin - Mot de passe :
admin
- Identifiant :
-
Changer le mot de passe immediatement dans Configuration > Mot de passe administrateur
-
Configurer le SMTP dans Configuration > Configuration SMTP, puis cliquer sur "Envoyer un email de test" pour valider
-
Ajuster les seuils si necessaire (valeurs par defaut : CPU 90%, RAM 85%, Disque 90%)
Le dossier
data\est cree automatiquement au premier lancement avec la configuration par defaut.
Acces distant
Pour acceder a l'interface depuis une autre machine :
-
Ouvrir le port dans le firewall Windows (PowerShell en administrateur) :
New-NetFirewallRule -DisplayName "Supervision Monitoring" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow -
Acceder via :
http://<adresse-ip-du-serveur>:5000
Recommandation : pour un acces depuis internet, placer l'application derriere un reverse proxy (IIS, Nginx) avec HTTPS.
Installation en tant que service Windows
Pour que Supervision demarre automatiquement avec Windows, utiliser NSSM :
-
Telecharger NSSM et le placer dans le PATH
-
Executer en administrateur :
nssm install Supervision "C:\supervision\supervision.exe" nssm set Supervision AppDirectory "C:\supervision" nssm set Supervision Description "Monitoring systeme - Supervision" nssm set Supervision Start SERVICE_AUTO_START nssm start Supervision -
Gestion du service :
nssm start Supervision nssm stop Supervision nssm restart Supervision nssm remove Supervision confirm
Compilation depuis les sources
Pre-requis
- Rust 1.75 ou superieur
Compiler pour la machine locale (Linux/Windows)
cargo build --release
L'executable est genere dans target/release/supervision (Linux) ou target\release\supervision.exe (Windows).
Cross-compiler pour Windows depuis Linux
# Installation (une seule fois)
rustup target add x86_64-pc-windows-gnu
sudo apt install gcc-mingw-w64-x86-64
# Compilation
cargo build --release --target x86_64-pc-windows-gnu
L'executable Windows est genere dans target/x86_64-pc-windows-gnu/release/supervision.exe.
Lancer en mode developpement
cargo run
L'application demarre sur http://localhost:5000 avec rechargement des templates depuis le dossier templates/.
Stack technique
| Composant | Crate Rust | Remplace (Python) |
|---|---|---|
| Serveur web | axum | Flask |
| Metriques systeme | sysinfo | psutil |
| Templates HTML | tera (Jinja2-compatible) | Jinja2 |
| Envoi email | lettre | smtplib |
| Hashing mot de passe | argon2 | werkzeug (PBKDF2) |
| Serialisation JSON | serde + serde_json | json |
| Async runtime | tokio | threading |
Structure des fichiers
supervision\
├── supervision.exe # Executable principal
├── Cargo.toml # Dependances Rust
├── src\
│ ├── main.rs # Serveur web, routes, sessions
│ ├── config.rs # Gestion configuration JSON
│ ├── monitor.rs # Collecte metriques systeme
│ └── alerter.rs # Envoi alertes email SMTP
├── templates\ # Pages HTML de l'interface
│ ├── base.html
│ ├── login.html
│ ├── dashboard.html
│ ├── settings.html
│ └── alerts.html
├── static\
│ └── style.css # Styles CSS
└── data\ # (cree au 1er lancement)
├── config.json # Configuration (seuils, SMTP, processus)
└── alerts.json # Historique des alertes
Configuration par defaut
| Parametre | Valeur par defaut |
|---|---|
| Port | 5000 |
| Intervalle de check | 1 minute |
| Cooldown entre alertes | 30 minutes |
| Seuil CPU | 90% |
| Seuil RAM | 85% |
| Seuil Disque | 90% |
Processus surveilles par defaut
| Nom | Pattern de recherche | Alerte si arrete |
|---|---|---|
| JVM | java | Oui |
| Nginx | nginx | Non (desactive) |
| Amadea Web 8 x64 | amadea | Oui |
Tous les parametres sont modifiables depuis l'interface web.
Migration depuis la version Python
Si un fichier data/config.json existant contient un hash de mot de passe au format Python (werkzeug/PBKDF2), la version Rust le detecte automatiquement et reinitialise le mot de passe a admin. Un message d'avertissement s'affiche dans la console.
Les autres parametres (seuils, SMTP, processus) sont conserves.
Depannage
| Probleme | Solution |
|---|---|
| "Le port 5000 est deja utilise" | Changer le port dans data\config.json ou fermer le programme qui occupe le port |
| Impossible de se connecter a distance | Verifier la regle firewall (port 5000 TCP entrant) |
| Pas d'email recu | Verifier la configuration SMTP et utiliser le bouton "Envoyer un email de test" |
| Mot de passe oublie | Supprimer data\config.json et relancer (reinitialise a admin/admin) |
| L'executable ne se lance pas | Verifier que les dossiers templates\ et static\ sont a cote de l'executable |