# 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 1. **Copier** les fichiers suivants dans un dossier, par exemple `C:\supervision\` : ``` supervision.exe templates\ (dossier complet) static\ (dossier complet) ``` 2. **Lancer** l'executable : ``` C:\supervision\supervision.exe ``` 3. **Ouvrir le navigateur** a l'adresse : ``` http://localhost:5000 ``` 4. **Se connecter** avec les identifiants par defaut : - Identifiant : `admin` - Mot de passe : `admin` 5. **Changer le mot de passe** immediatement dans Configuration > Mot de passe administrateur 6. **Configurer le SMTP** dans Configuration > Configuration SMTP, puis cliquer sur "Envoyer un email de test" pour valider 7. **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 : 1. **Ouvrir le port dans le firewall Windows** (PowerShell en administrateur) : ```powershell New-NetFirewallRule -DisplayName "Supervision Monitoring" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow ``` 2. Acceder via : `http://: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](https://nssm.cc/) : 1. Telecharger NSSM et le placer dans le PATH 2. Executer en administrateur : ```cmd 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 ``` 3. Gestion du service : ```cmd nssm start Supervision nssm stop Supervision nssm restart Supervision nssm remove Supervision confirm ``` --- ## Compilation depuis les sources ### Pre-requis - [Rust](https://rustup.rs/) 1.75 ou superieur ### Compiler pour la machine locale (Linux/Windows) ```bash cargo build --release ``` L'executable est genere dans `target/release/supervision` (Linux) ou `target\release\supervision.exe` (Windows). ### Cross-compiler pour Windows depuis Linux ```bash # 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 ```bash 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 |