mirror of
				https://github.com/csehviktor/status-monitor.git
				synced 2025-08-08 18:06:14 +02:00 
			
		
		
		
	improve agent + config
This commit is contained in:
		| @@ -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 { | ||||
|   | ||||
| @@ -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)); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user