diff --git a/Cargo.lock b/Cargo.lock index 637caff..f5ffb60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -279,7 +279,7 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cm-dashboard" -version = "0.1.205" +version = "0.1.206" dependencies = [ "anyhow", "chrono", @@ -301,7 +301,7 @@ dependencies = [ [[package]] name = "cm-dashboard-agent" -version = "0.1.205" +version = "0.1.206" dependencies = [ "anyhow", "async-trait", @@ -324,7 +324,7 @@ dependencies = [ [[package]] name = "cm-dashboard-shared" -version = "0.1.205" +version = "0.1.206" dependencies = [ "chrono", "serde", diff --git a/agent/src/collectors/systemd.rs b/agent/src/collectors/systemd.rs index bff99a1..3136dc8 100644 --- a/agent/src/collectors/systemd.rs +++ b/agent/src/collectors/systemd.rs @@ -353,16 +353,12 @@ impl SystemdCollector { Ok((services, status_cache)) } - /// Get service status from cache (if available) or fallback to systemctl + /// Get service status with detailed metrics from systemctl fn get_service_status(&self, service: &str) -> Result { - // Try to get status from cache first - if let Ok(state) = self.state.read() { - if let Some(cached_info) = state.service_status_cache.get(service) { - return Ok(cached_info.clone()); - } - } + // Always fetch fresh data to get detailed metrics (memory, restarts, uptime) + // Note: Cache in service_status_cache only has basic active_state from discovery, + // with all detailed metrics set to None. We need fresh systemctl show data. - // Fallback to systemctl if not in cache (with 2 second timeout) let output = Command::new("timeout") .args(&[ "2",