321 lines
7.1 KiB
Markdown
Executable File
321 lines
7.1 KiB
Markdown
Executable File
# Guide de Déploiement - Linux BenchTools
|
|
|
|
## Modifications Apportées
|
|
|
|
### 1. Backend API
|
|
- ✅ **Schémas Pydantic mis à jour** ([backend/app/schemas/hardware.py](backend/app/schemas/hardware.py))
|
|
- `RAMInfo` : Ajout de `used_mb`, `free_mb`, `shared_mb`
|
|
- `StorageDevice` : `capacity_gb` changé de `int` à `float`
|
|
|
|
- ✅ **API endpoint mis à jour** ([backend/app/api/benchmark.py](backend/app/api/benchmark.py))
|
|
- Sauvegarde des nouveaux champs RAM
|
|
|
|
- ✅ **Modèles de base de données** ([backend/app/models/](backend/app/models/))
|
|
- `HardwareSnapshot` : Nouveaux champs RAM
|
|
- `DiskSMART` : Nouveau modèle pour données SMART (créé mais pas encore utilisé)
|
|
|
|
### 2. Docker
|
|
- ✅ **Service iperf3 ajouté** ([docker-compose.yml](docker-compose.yml))
|
|
- Port 5201 TCP/UDP exposé
|
|
|
|
### 3. Script Client
|
|
- ✅ **Script bench.sh complètement réécrit** ([scripts/bench.sh](scripts/bench.sh))
|
|
- Génère le payload JSON directement
|
|
- Collecte toutes les données hardware
|
|
- Exécute les benchmarks
|
|
- Envoie au serveur API
|
|
|
|
## Déploiement
|
|
|
|
### Étape 1: Arrêter les Services
|
|
|
|
```bash
|
|
cd /home/gilles/Documents/vscode/serv_benchmark
|
|
docker-compose down
|
|
```
|
|
|
|
### Étape 2: Appliquer les Migrations Base de Données
|
|
|
|
Si la base de données existe déjà, appliquez les scripts dans l'ordre :
|
|
|
|
```bash
|
|
cd backend
|
|
python3 apply_migration.py
|
|
python3 apply_migration_002.py
|
|
python3 apply_migration_003.py
|
|
python3 apply_migration_004.py
|
|
python3 apply_migration_005.py
|
|
```
|
|
|
|
**OU** si vous préférez partir de zéro (⚠️ PERTE DE DONNÉES) :
|
|
|
|
```bash
|
|
rm -f backend/data/data.db
|
|
```
|
|
|
|
### Étape 3: Démarrer les Services
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
Vérifier les logs :
|
|
|
|
```bash
|
|
docker-compose logs -f backend
|
|
docker-compose logs iperf3
|
|
```
|
|
|
|
### Étape 4: Tester le Serveur iperf3
|
|
|
|
Depuis un client :
|
|
|
|
```bash
|
|
iperf3 -c 10.0.0.50 -p 5201
|
|
```
|
|
|
|
Vous devriez voir le test de bande passante s'exécuter.
|
|
|
|
### Étape 5: Exécuter le Script Bench
|
|
|
|
Depuis un client Linux :
|
|
|
|
```bash
|
|
# Option 1: Télécharger et exécuter
|
|
curl -sSL https://gitea.maison43.duckdns.org/gilles/serv_benchmark/raw/branch/main/scripts/bench.sh | sudo bash
|
|
|
|
# Option 2: Exécuter localement
|
|
cd /chemin/vers/serv_benchmark
|
|
sudo bash scripts/bench.sh
|
|
```
|
|
|
|
**Note** : Le script `bench.sh` a les paramètres serveur codés en dur :
|
|
- `SERVER_URL="10.0.0.50:8007"`
|
|
- `API_TOKEN="29855796dacf5cfe75ff9b02d6adf3dd0f9c52db5b53e7abfb4c0df7ece1be0a"`
|
|
- `IPERF_SERVER="10.0.0.50"`
|
|
|
|
Pour les modifier, éditez le fichier ou passez-les en variables d'environnement.
|
|
|
|
## Vérification
|
|
|
|
### 1. Vérifier la Base de Données
|
|
|
|
```bash
|
|
sqlite3 backend/data/data.db
|
|
|
|
# Lister les tables
|
|
.tables
|
|
|
|
# Vérifier les colonnes de hardware_snapshots
|
|
PRAGMA table_info(hardware_snapshots);
|
|
|
|
# Voir les derniers benchmarks
|
|
SELECT id, device_id, global_score, run_at FROM benchmarks ORDER BY run_at DESC LIMIT 5;
|
|
|
|
# Voir les données RAM détaillées
|
|
SELECT
|
|
d.hostname,
|
|
h.ram_total_mb,
|
|
h.ram_used_mb,
|
|
h.ram_free_mb,
|
|
h.ram_shared_mb
|
|
FROM hardware_snapshots h
|
|
JOIN devices d ON h.device_id = d.id
|
|
ORDER BY h.captured_at DESC
|
|
LIMIT 5;
|
|
```
|
|
|
|
### 2. Vérifier l'API
|
|
|
|
```bash
|
|
# Tester l'endpoint
|
|
curl http://10.0.0.50:8007/docs
|
|
|
|
# Voir les devices
|
|
curl http://10.0.0.50:8007/api/devices
|
|
```
|
|
|
|
### 3. Consulter le Frontend
|
|
|
|
Ouvrir dans un navigateur :
|
|
```
|
|
http://10.0.0.50:8087
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Erreur: HTTP 422 "Input should be a valid integer"
|
|
|
|
**Solution** : Cette erreur a été corrigée en changeant `capacity_gb` de `int` à `float` dans le schéma.
|
|
|
|
Si vous rencontrez encore cette erreur :
|
|
1. Vérifiez que le backend a bien été redémarré après les modifications
|
|
2. Vérifiez les logs : `docker-compose logs backend`
|
|
|
|
### Port 5201 déjà utilisé
|
|
|
|
```bash
|
|
# Trouver le processus
|
|
sudo lsof -i :5201
|
|
|
|
# Arrêter le service Docker iperf3
|
|
docker-compose stop iperf3
|
|
```
|
|
|
|
### Script bench.sh ne trouve pas les dépendances
|
|
|
|
```bash
|
|
# Installer manuellement
|
|
sudo apt-get update
|
|
sudo apt-get install -y curl jq sysbench fio iperf3 dmidecode smartmontools ethtool
|
|
```
|
|
|
|
### Base de données verrouillée (SQLite locked)
|
|
|
|
```bash
|
|
# Arrêter tous les services
|
|
docker-compose down
|
|
|
|
# Supprimer les locks
|
|
rm -f backend/data/data.db-shm backend/data/data.db-wal
|
|
|
|
# Redémarrer
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Structure des Données Envoyées
|
|
|
|
Le script `bench.sh` envoie un payload JSON avec cette structure :
|
|
|
|
```json
|
|
{
|
|
"device_identifier": "hostname",
|
|
"bench_script_version": "1.1.0",
|
|
"hardware": {
|
|
"cpu": {
|
|
"vendor": "GenuineIntel",
|
|
"model": "Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz",
|
|
"cores": 4,
|
|
"threads": 4,
|
|
...
|
|
},
|
|
"ram": {
|
|
"total_mb": 7771,
|
|
"used_mb": 6123, // NOUVEAU
|
|
"free_mb": 923, // NOUVEAU
|
|
"shared_mb": 760, // NOUVEAU
|
|
"slots_total": 4,
|
|
"slots_used": 4,
|
|
"ecc": false,
|
|
"layout": [...]
|
|
},
|
|
"storage": {
|
|
"devices": [
|
|
{
|
|
"name": "/dev/sda",
|
|
"type": "SSD",
|
|
"capacity_gb": 447.1, // FLOAT maintenant
|
|
...
|
|
}
|
|
],
|
|
"partitions": []
|
|
},
|
|
"network": {
|
|
"interfaces": [...]
|
|
},
|
|
"motherboard": {...},
|
|
"os": {...}
|
|
},
|
|
"results": {
|
|
"cpu": {
|
|
"events_per_sec": 1206.65,
|
|
"duration_s": 10.0,
|
|
"score": 12.06
|
|
},
|
|
"memory": {...},
|
|
"disk": {...},
|
|
"network": {...},
|
|
"gpu": null,
|
|
"global_score": 10.85
|
|
}
|
|
}
|
|
```
|
|
|
|
## Prochaines Étapes
|
|
|
|
### À Implémenter
|
|
|
|
1. **Données SMART des disques**
|
|
- Le modèle `DiskSMART` existe mais n'est pas encore utilisé
|
|
- Modifier `bench.sh` pour collecter les données SMART
|
|
- Adapter l'API pour sauvegarder dans `disk_smart_data`
|
|
|
|
2. **Wake-on-LAN**
|
|
- Ajouter le champ dans le schéma `NetworkInterface`
|
|
- Collecter dans `bench.sh`
|
|
- Afficher dans le frontend
|
|
|
|
3. **Frontend**
|
|
- Afficher les nouvelles données RAM
|
|
- Graphiques d'utilisation
|
|
- Dashboard SMART pour la santé des disques
|
|
|
|
4. **Amélioration du script bench.sh**
|
|
- Supporter les arguments en ligne de commande
|
|
- Mode verbose/debug
|
|
- Retry automatique en cas d'échec
|
|
|
|
## Logs Utiles
|
|
|
|
### Backend
|
|
```bash
|
|
docker-compose logs -f backend
|
|
```
|
|
|
|
### iperf3
|
|
```bash
|
|
docker-compose logs -f iperf3
|
|
```
|
|
|
|
### Tous les services
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|
|
|
|
## Performance
|
|
|
|
Le script `bench.sh` prend environ **3-5 minutes** pour :
|
|
- Collecter toutes les données hardware (30s)
|
|
- Benchmark CPU (10s)
|
|
- Benchmark RAM (10s)
|
|
- Benchmark Disk (2-3 minutes avec fio)
|
|
- Benchmark Network (optionnel, 20s)
|
|
|
|
## Sécurité
|
|
|
|
⚠️ **Le token API est codé en dur dans le script** :
|
|
```bash
|
|
API_TOKEN="29855796dacf5cfe75ff9b02d6adf3dd0f9c52db5b53e7abfb4c0df7ece1be0a"
|
|
```
|
|
|
|
**Recommandations** :
|
|
- Changer ce token en production
|
|
- Utiliser des variables d'environnement
|
|
- Limiter l'accès au serveur API par IP
|
|
- Utiliser HTTPS en production
|
|
|
|
## Support
|
|
|
|
Pour toute question ou problème :
|
|
1. Consulter les logs Docker
|
|
2. Vérifier le fichier [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md)
|
|
3. Tester manuellement avec `curl` :
|
|
|
|
```bash
|
|
# Test manuel de l'API
|
|
curl -X POST http://10.0.0.50:8007/api/benchmark \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|
-d @result.json
|
|
```
|