rust_observer 0.2.2

Express telemetry rust SDK
Documentation
use sysinfo::System;

#[derive(Debug, Default, Clone)]
pub struct ProcessMetrics {
    pub cpu_usage: f32,
    pub memory_usage: u64,
    pub disk_usage: u64,
}

impl ProcessMetrics {
    pub fn collect() -> Option<Self> {
        let mut sys = System::new_all();
        sys.refresh_all();

        sysinfo::get_current_pid().ok().and_then(|pid| {
            sys.process(pid).map(|process| ProcessMetrics {
                cpu_usage: process.cpu_usage(),
                memory_usage: process.memory(),
                disk_usage: process.disk_usage().total_written_bytes,
            })
        })
    }
}