diff --git a/agent/Cargo.toml b/agent/Cargo.toml index f4c3b0c..b83ea79 100644 --- a/agent/Cargo.toml +++ b/agent/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nanometrics-agent" -version = "0.1.9" +version = "0.1.10" edition = "2021" [lib] diff --git a/agent/src/metrics/smart.rs b/agent/src/metrics/smart.rs index 0adc2b2..b4e205f 100644 --- a/agent/src/metrics/smart.rs +++ b/agent/src/metrics/smart.rs @@ -92,12 +92,15 @@ pub fn collect() -> Option> { .filter_map(|n| { if n.starts_with("sd") { Some(format!("/dev/{}", n)) - } else if n.starts_with("nvme") && !n.contains('n') { - // /sys/block contient nvme0n1 (namespace) — on utilise le contrôleur nvme0 - Some(format!("/dev/{}", n)) - } else if n.starts_with("nvme") && n.contains('n') { - // Déduit le contrôleur depuis nvme0n1 → nvme0 - let ctrl = n.split('n').next()?; + } else if n.starts_with("nvme") { + // /sys/block a nvme0n1 (namespace) → extraire le contrôleur nvme0 + // rfind('n') trouve le dernier 'n' séparateur namespace, ex: nvme0[n]1 + let ctrl = if let Some(pos) = n.rfind('n') + .filter(|&p| p >= 5 && n[p+1..].chars().all(|c| c.is_ascii_digit())) { + &n[..pos] + } else { + &n // déjà un nom de contrôleur (rare) + }; Some(format!("/dev/{}", ctrl)) } else { None diff --git a/dist/nanometrics-agent-linux-amd64 b/dist/nanometrics-agent-linux-amd64 index d5ce209..74eb5c4 100755 Binary files a/dist/nanometrics-agent-linux-amd64 and b/dist/nanometrics-agent-linux-amd64 differ diff --git a/dist/nanometrics-agent-linux-arm64 b/dist/nanometrics-agent-linux-arm64 index b4ca9ae..254715b 100755 Binary files a/dist/nanometrics-agent-linux-arm64 and b/dist/nanometrics-agent-linux-arm64 differ