improve agent + config

This commit is contained in:
csehviktor
2025-07-03 06:10:59 +02:00
parent 1f89f8d4cb
commit c291353690
2 changed files with 21 additions and 32 deletions

View File

@@ -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}; use sysinfo::{Disks, Networks, System};
pub struct Collector { pub struct Collector {
@@ -19,8 +19,7 @@ impl Collector {
pub fn collect_all(&mut self) -> Metrics { pub fn collect_all(&mut self) -> Metrics {
let system_info = self.collect_sysinfo(); let system_info = self.collect_sysinfo();
self.sys.refresh_cpu_usage(); self.sys.refresh_all();
self.sys.refresh_memory();
self.networks.refresh(true); self.networks.refresh(true);
let cpu = self.collect_cpu(); let cpu = self.collect_cpu();
@@ -28,27 +27,23 @@ impl Collector {
let memory = self.collect_memory(); let memory = self.collect_memory();
let network = self.collect_network(); let network = self.collect_network();
let metrics = Metrics { Metrics {
system_info, system_info,
cpu, cpu,
disk, disk,
memory, memory,
network, network,
}; }
metrics
} }
fn collect_sysinfo(&self) -> SystemInfo { fn collect_sysinfo(&self) -> SystemInfo {
let system_info = SystemInfo { SystemInfo {
uptime: System::uptime(), uptime: System::uptime(),
host: System::host_name(), host: System::host_name(),
name: System::name(), name: System::name(),
kernel: System::kernel_version(), kernel: System::kernel_version(),
os_version: System::os_version(), os_version: System::os_version(),
}; }
system_info
} }
fn collect_cpu(&self) -> CPU { fn collect_cpu(&self) -> CPU {
@@ -65,31 +60,21 @@ impl Collector {
} }
fn collect_disk(&self) -> Disk { fn collect_disk(&self) -> Disk {
let disk = self let disk = self.disks.iter().max_by_key(|disk| disk.total_space()).unwrap();
.disks
.iter()
.max_by_key(|disk| disk.total_space())
.unwrap();
let total = disk.total_space();
let free = disk.available_space();
Disk { Disk {
used: total - free, free: disk.available_space(),
free, total: disk.total_space(),
total
} }
} }
fn collect_memory(&self) -> Memory { fn collect_memory(&self) -> Memory {
let memory_metrics = Memory { Memory {
used: self.sys.used_memory(), used: self.sys.used_memory(),
total: self.sys.total_memory(), total: self.sys.total_memory(),
swap_used: self.sys.used_swap(), swap_used: self.sys.used_swap(),
swap_total: self.sys.total_swap(), swap_total: self.sys.total_swap(),
}; }
memory_metrics
} }
fn collect_network(&self) -> Network { fn collect_network(&self) -> Network {

View File

@@ -1,19 +1,23 @@
use config::{load_config, Config};
use mqtt::MqttHandle;
use collector::Collector; use collector::Collector;
use std::time::Duration;
use std::thread; use std::thread;
use std::time;
pub mod collector; 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(); let mut collector = Collector::new();
loop { loop {
let metrics = collector.collect_all(); let metrics = collector.collect_all();
client.send_metrics(metrics).await?;
println!("Metrics: {:?}", metrics); thread::sleep(Duration::from_secs(cfg.send_interval_seconds));
thread::sleep(time::Duration::from_millis(REFRESH_INTERVAL));
} }
} }