From f6433ebb8bd1379e4b09c4950f19b8ff6add9a73 Mon Sep 17 00:00:00 2001 From: houseme Date: Wed, 8 Jul 2026 16:29:48 +0800 Subject: [PATCH] fix(obs): drop placeholder drive series (#4440) Co-authored-by: heihutu --- .../src/metrics/collectors/system_drive.rs | 222 +++++++++++------- crates/obs/src/metrics/stats_collector.rs | 34 ++- 2 files changed, 153 insertions(+), 103 deletions(-) diff --git a/crates/obs/src/metrics/collectors/system_drive.rs b/crates/obs/src/metrics/collectors/system_drive.rs index 9829ba7b2..87f7a3af4 100644 --- a/crates/obs/src/metrics/collectors/system_drive.rs +++ b/crates/obs/src/metrics/collectors/system_drive.rs @@ -44,38 +44,38 @@ pub struct DriveDetailedStats { pub capacity_observation_state: &'static str, /// Age in seconds of the current capacity observation pub capacity_observation_age_seconds: u64, - /// Used inodes - pub used_inodes: u64, - /// Free inodes - pub free_inodes: u64, - /// Total inodes - pub total_inodes: u64, - /// Total timeout errors - pub timeout_errors_total: u64, - /// Total I/O errors - pub io_errors_total: u64, - /// Total availability errors - pub availability_errors_total: u64, - /// Number of I/O operations waiting - pub waiting_io: u64, - /// API latency in microseconds - pub api_latency_micros: u64, + /// Used inodes when the platform provides a real inode sample + pub used_inodes: Option, + /// Free inodes when the platform provides a real inode sample + pub free_inodes: Option, + /// Total inodes when the platform provides a real inode sample + pub total_inodes: Option, + /// Total timeout errors when backed by a real error counter + pub timeout_errors_total: Option, + /// Total I/O errors when backed by a real error counter + pub io_errors_total: Option, + /// Total availability errors when backed by a real error counter + pub availability_errors_total: Option, + /// Number of I/O operations waiting when backed by a real queue sample + pub waiting_io: Option, + /// API latency in microseconds when backed by a real latency sample + pub api_latency_micros: Option, /// Health status (1=healthy, 0=unhealthy) pub health: u8, - /// Reads per second - pub reads_per_sec: f64, - /// Kilobytes read per second - pub reads_kb_per_sec: f64, - /// Average read await time - pub reads_await: f64, - /// Writes per second - pub writes_per_sec: f64, - /// Kilobytes written per second - pub writes_kb_per_sec: f64, - /// Average write await time - pub writes_await: f64, - /// Percentage utilization - pub perc_util: f64, + /// Reads per second when backed by a real iostat sample + pub reads_per_sec: Option, + /// Kilobytes read per second when backed by a real iostat sample + pub reads_kb_per_sec: Option, + /// Average read await time when backed by a real iostat sample + pub reads_await: Option, + /// Writes per second when backed by a real iostat sample + pub writes_per_sec: Option, + /// Kilobytes written per second when backed by a real iostat sample + pub writes_kb_per_sec: Option, + /// Average write await time when backed by a real iostat sample + pub writes_await: Option, + /// Drive percent utilization when backed by a real iostat sample + pub perc_util: Option, } /// Aggregate drive count statistics. @@ -134,46 +134,52 @@ pub fn collect_drive_detailed_metrics(stats: &[DriveDetailedStats]) -> Vec (Vec, Vec 0 { - (disk.used_space as f64 / disk.total_space as f64) * 100.0 - } else { - 0.0 - }, + reads_per_sec: None, + reads_kb_per_sec: None, + reads_await: None, + writes_per_sec: None, + writes_kb_per_sec: None, + writes_await: None, + perc_util: None, } }) .collect();