136 lines
4.7 KiB
Markdown
136 lines
4.7 KiB
Markdown
Documentation utilisateur et technique pour le déploiement de bench-client.
|
|
|
|
Bench-Client
|
|
Agent de benchmarking autonome pour Linux x86_64 (Go). Cet outil remplace l'ancien script Bash en offrant une meilleure robustesse, une exécution parallèle sécurisée et une configuration distante pilotable.
|
|
|
|
📋 Table des matières
|
|
Fonctionnalités
|
|
Prérequis
|
|
Installation
|
|
Utilisation
|
|
Configuration
|
|
Sortie JSON
|
|
✨ Fonctionnalités
|
|
Inventaire Matériel Complet : CPU, RAM, Disques, Réseau, Carte Mère, Audio.
|
|
Benchmarks Sécurisés :
|
|
CPU (Sysbench : Single & Multi-thread).
|
|
RAM (Sysbench : Bande passante).
|
|
Disque (FIO : Aléatoire mixte, non-destructif).
|
|
Réseau (Iperf3 : Débit bidirectionnel).
|
|
Pilotage par Configuration Distante : Récupère les paramètres et les pondérations via HTTP(S).
|
|
Mode Débogage Intégré : Logs verbeux, sauvegarde locale des payloads.
|
|
Sécurité : Timeouts stricts, pas d'injection de commande, pas de secrets dans le binaire.
|
|
🛠️ Prérequis
|
|
Le binaire nécessite un environnement Linux x86_64 avec les droits root (sudo) pour accéder aux informations matérielles complètes (dmidecode, smartctl).
|
|
|
|
Dépendances système
|
|
Le script d'installation doit s'assurer que les outils suivants sont présents dans le $PATH :
|
|
|
|
# Baselsblk, lscpu, free, ip, lspci, lsusb, dmidecode, systemd-detect-virt# Réseauethtool, iw, iperf3, curl, nc (netcat)# Audioaplay, arecord, pactl# Benchmarkssysbench, fio
|
|
🚀 Installation
|
|
L'installation est gérée par un script shell externe (non inclus dans le binaire) qui doit effectuer les actions suivantes :
|
|
|
|
Télécharger le binaire bench-client (statique de préférence).
|
|
Télécharger le fichier config.yaml et le placer dans /var/cache/bench-client/ (ou le laisser être téléchargé par le client).
|
|
Donner les droits d'exécution : chmod +x bench-client.
|
|
S'assurer que les dépendances listées ci-dessus sont installées.
|
|
Exporter le token d'authentification.
|
|
💻 Utilisation
|
|
Syntaxe de base
|
|
bash
|
|
|
|
sudo API_TOKEN="votre_secret_token" ./bench-client [OPTIONS]
|
|
Options disponibles
|
|
Option
|
|
Description
|
|
--config-url <URL> URL HTTP(S) pour télécharger la config.yaml à jour. Si omis, utilise le cache local ou les défauts internes.
|
|
--debug Active le mode verbeux. Affiche les commandes exécutées, les sorties brutes, et sauvegarde le JSON final dans /tmp.
|
|
--dry-run Simulation. Exécute la collecte d'infos mais ne lance pas les benchmarks (sauf inventaire) et n'envoie pas les données au serveur.
|
|
|
|
Exemples
|
|
Lancement standard (production) :
|
|
|
|
bash
|
|
|
|
sudo API_TOKEN="eyJhbGciOiJIUz..." ./bench-client --config-url "http://mon-intranet/configs/bench.yaml"
|
|
Test de collecte (sans bench) :
|
|
|
|
bash
|
|
|
|
sudo ./bench-client --dry-run --debug
|
|
⚙️ Configuration
|
|
Le fichier config.yaml (voir section précédente) contrôle le comportement du client.
|
|
|
|
Points clés de la configuration :
|
|
|
|
Backend : L'URL de réception des données.
|
|
Pondérations (weights) : Définissent l'importance de chaque bench dans le score final (par ex : CPU 40%, Disk 20%).
|
|
Sécurité (safety) : FIO est configuré pour être non-destructif (direct: true, fichier temporaire).
|
|
Timeouts : Chaque outil a une limite de temps stricte pour éviter que le client ne se bloque.
|
|
📤 Sortie JSON
|
|
Le client envoie une requête POST avec l'en-tête Authorization: Bearer <TOKEN>.
|
|
|
|
Structure du JSON
|
|
json
|
|
|
|
{
|
|
"device_identifier": "srv-web-01",
|
|
"bench_client_version": "1.0.0",
|
|
"hardware": {
|
|
"cpu": {
|
|
"model": "Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz",
|
|
"cores": 24,
|
|
"threads": 48
|
|
},
|
|
"ram": {
|
|
"total_mb": 65536
|
|
},
|
|
"storage": [
|
|
{
|
|
"name": "sda",
|
|
"size_gb": "500G",
|
|
"type": "ssd"
|
|
}
|
|
],
|
|
"network": [
|
|
{
|
|
"name": "eth0",
|
|
"ip_address": "192.168.1.10",
|
|
"speed_mbps": "1000"
|
|
}
|
|
]
|
|
},
|
|
"results": {
|
|
"cpu": {
|
|
"score_single": 105.4,
|
|
"score_multi": 2400.8
|
|
},
|
|
"memory": {
|
|
"throughput_mib_s": 5500.2,
|
|
"score": 55.0
|
|
},
|
|
"disk": {
|
|
"read_mb_s": 420.5,
|
|
"write_mb_s": 380.2,
|
|
"score": 40.0
|
|
},
|
|
"network": {
|
|
"upload_mbps": 940.0,
|
|
"download_mbps": 945.0,
|
|
"score": 94.2
|
|
},
|
|
"global_score": 85.4
|
|
},
|
|
"raw_info": {
|
|
"lscpu_output": "..."
|
|
}
|
|
}
|
|
🔧 Dépannage
|
|
Erreur "Configuration unreachable"
|
|
Le client n'a pas pu joindre l'URL --config-url. Il tentera d'utiliser le fichier de cache local situé dans /var/cache/bench-client/config.yaml.
|
|
|
|
Benchmarks marqués "SKIPPED"
|
|
Si un outil n'est pas trouvé (ex: iperf3 manquant), le client affichera un WARN et continuera. Vérifiez les dépendances système.
|
|
|
|
Permissions refusées
|
|
Ce binaire doit être lancé en root (via sudo) pour pouvoir exécuter dmidecode, smartctl et fio en mode direct. |