]> git.proxmox.com Git - proxmox-backup.git/commitdiff
src/bin/proxmox-backup-proxy.rs: gather datastore usage stats
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 25 May 2020 14:00:03 +0000 (16:00 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 25 May 2020 14:20:32 +0000 (16:20 +0200)
src/bin/proxmox-backup-proxy.rs

index 4d7f8099539fc97fe016e837b9ed90bf6d3e849b..c7159df73f4a31e018174ac7c2e86ebe157462e8 100644 (file)
@@ -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<datastore::DataStoreConfig> =
+                    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);
+            }
+        }
+
     });
 }