Files
bench_go/readme.md
2026-01-11 21:54:37 +01:00

4.7 KiB

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 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 .

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.