From d0833a70f79b28d269d7bcdd316c3b592dcd1ea1 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 25 May 2020 16:00:03 +0200 Subject: [PATCH] src/bin/proxmox-backup-proxy.rs: gather datastore usage stats --- src/bin/proxmox-backup-proxy.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index 4d7f8099..c7159df7 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -603,7 +603,7 @@ async fn run_stat_generator() { async fn generate_host_stats() { use proxmox::sys::linux::procfs::{ read_meminfo, read_proc_stat, read_proc_net_dev, read_loadavg}; - use proxmox_backup::rrd; + use proxmox_backup::{ rrd, config::datastore }; proxmox_backup::tools::runtime::block_in_place(move || { @@ -688,6 +688,33 @@ async fn generate_host_stats() { } } + match datastore::config() { + Ok((config, _)) => { + let datastore_list: Vec = + config.convert_to_typed_array("datastore").unwrap_or(Vec::new()); + + for config in datastore_list { + match disk_usage(std::path::Path::new(&config.path)) { + Ok((total, used, _avail)) => { + let rrd_key = format!("datastore/{}", config.name); + if let Err(err) = rrd::update_value(&rrd_key, total as f64, rrd::DST::Gauge) { + eprintln!("rrd::update_value '{}' failed - {}", rrd_key, err); + } + if let Err(err) = rrd::update_value(&rrd_key, used as f64, rrd::DST::Gauge) { + eprintln!("rrd::update_value '{}' failed - {}", rrd_key, err); + } + } + Err(err) => { + eprintln!("read disk_usage on {:?} failed - {}", config.path, err); + } + } + } + } + Err(err) => { + eprintln!("read datastore config failed - {}", err); + } + } + }); } -- 2.39.2