use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
pub struct SystemMetrics {
pub timestamp: i64,
pub mem_free_mb: f64,
pub mem_total_mb: f64,
pub swap_free_mb: f64,
pub swap_total_mb: f64,
pub cpu_load_1: f64,
pub cpu_load_5: f64,
pub cpu_load_15: f64,
pub disk_free_gb: f64,
pub disk_total_gb: f64,
}
impl SystemMetrics {
pub fn new() -> Self {
Self {
timestamp: 0,
mem_free_mb: 0.0,
mem_total_mb: 0.0,
swap_free_mb: 0.0,
swap_total_mb: 0.0,
cpu_load_1: 0.0,
cpu_load_5: 0.0,
cpu_load_15: 0.0,
disk_free_gb: 0.0,
disk_total_gb: 0.0,
}
}
pub fn mem_used_percent(&self) -> f64 {
if self.mem_total_mb == 0.0 { return 0.0; }
((self.mem_total_mb - self.mem_free_mb) / self.mem_total_mb) * 100.0
}
pub fn swap_used_percent(&self) -> f64 {
if self.swap_total_mb == 0.0 { return 0.0; }
((self.swap_total_mb - self.swap_free_mb) / self.swap_total_mb) * 100.0
}
}