use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Metrics { pub system_info: SystemInfo, pub cpu: CPU, pub disk: Disk, pub memory: Memory, pub network: Network, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SystemInfo { pub uptime: u64, pub host: Option, pub name: Option, pub kernel: Option, pub os_version: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct CPU { pub usage: f32, pub threads: usize, pub breakdown: CpuBreakdown, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct CpuBreakdown { pub system: f32, pub user: f32, pub idle: f32, pub steal: f32, pub iowait: f32, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Disk { pub free: u64, pub total: u64, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Memory { pub used: u64, pub total: u64, pub swap_used: u64, pub swap_total: u64, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Network { pub down: u64, pub up: u64, }