From c29135369014b2ea02e9eb54c3cec212086a476e Mon Sep 17 00:00:00 2001 From: csehviktor Date: Thu, 3 Jul 2025 06:10:59 +0200 Subject: [PATCH] improve agent + config --- agent/src/collector.rs | 37 +++++++++++-------------------------- agent/src/main.rs | 16 ++++++++++------ 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/agent/src/collector.rs b/agent/src/collector.rs index 1a18301..15531ca 100644 --- a/agent/src/collector.rs +++ b/agent/src/collector.rs @@ -1,4 +1,4 @@ -use common::metrics::{CPU, Disk, Memory, Metrics, Network, SystemInfo}; +use common::metrics::{Disk, Memory, Metrics, Network, SystemInfo, CPU}; use sysinfo::{Disks, Networks, System}; pub struct Collector { @@ -19,8 +19,7 @@ impl Collector { pub fn collect_all(&mut self) -> Metrics { let system_info = self.collect_sysinfo(); - self.sys.refresh_cpu_usage(); - self.sys.refresh_memory(); + self.sys.refresh_all(); self.networks.refresh(true); let cpu = self.collect_cpu(); @@ -28,27 +27,23 @@ impl Collector { let memory = self.collect_memory(); let network = self.collect_network(); - let metrics = Metrics { + Metrics { system_info, cpu, disk, memory, network, - }; - - metrics + } } fn collect_sysinfo(&self) -> SystemInfo { - let system_info = SystemInfo { + SystemInfo { uptime: System::uptime(), host: System::host_name(), name: System::name(), kernel: System::kernel_version(), os_version: System::os_version(), - }; - - system_info + } } fn collect_cpu(&self) -> CPU { @@ -65,31 +60,21 @@ impl Collector { } fn collect_disk(&self) -> Disk { - let disk = self - .disks - .iter() - .max_by_key(|disk| disk.total_space()) - .unwrap(); - - let total = disk.total_space(); - let free = disk.available_space(); + let disk = self.disks.iter().max_by_key(|disk| disk.total_space()).unwrap(); Disk { - used: total - free, - free, - total + free: disk.available_space(), + total: disk.total_space(), } } fn collect_memory(&self) -> Memory { - let memory_metrics = Memory { + Memory { used: self.sys.used_memory(), total: self.sys.total_memory(), swap_used: self.sys.used_swap(), swap_total: self.sys.total_swap(), - }; - - memory_metrics + } } fn collect_network(&self) -> Network { diff --git a/agent/src/main.rs b/agent/src/main.rs index 8f82483..380cebf 100644 --- a/agent/src/main.rs +++ b/agent/src/main.rs @@ -1,19 +1,23 @@ +use config::{load_config, Config}; +use mqtt::MqttHandle; use collector::Collector; +use std::time::Duration; use std::thread; -use std::time; pub mod collector; -const REFRESH_INTERVAL: u64 = 3000; +#[tokio::main] +async fn main() -> anyhow::Result<()> { + let cfg = load_config()?; + let cfg: &'static mut Config = Box::leak(Box::new(cfg)); -fn main() { + let client = MqttHandle::create(&mut cfg.mqtt).await; let mut collector = Collector::new(); loop { let metrics = collector.collect_all(); + client.send_metrics(metrics).await?; - println!("Metrics: {:?}", metrics); - - thread::sleep(time::Duration::from_millis(REFRESH_INTERVAL)); + thread::sleep(Duration::from_secs(cfg.send_interval_seconds)); } }