only "some" values for now, not sure we need full values

Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 PVE/Service/pvestatd.pm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/PVE/Service/pvestatd.pm b/PVE/Service/pvestatd.pm
index b1e71ec8..832d9dc5 100755
--- a/PVE/Service/pvestatd.pm
+++ b/PVE/Service/pvestatd.pm
@@ -132,6 +132,7 @@ sub update_node_status {
     my $stat = PVE::ProcFSTools::read_proc_stat();
     my $cpuinfo = PVE::ProcFSTools::read_cpuinfo();
     my $maxcpu = $cpuinfo->{cpus};
+    my $pressure = PVE::ProcFSTools::read_pressure();
 
     update_supported_cpuflags();
 
@@ -168,10 +169,13 @@ sub update_node_status {
        memory => $meminfo,
        blockstat => $dinfo,
        nics => $netdev,
+       pressure => $pressure,
     };
     $node_metric->{cpustat}->@{qw(avg1 avg5 avg15)} = ($avg1, $avg5, $avg15);
     $node_metric->{cpustat}->{cpus} = $maxcpu;
 
+    broadcast_rrd_pressure($ctime, $node_metric, 
"pve2-metrics/nodes/$nodename");
+
     my $transactions = PVE::ExtMetric::transactions_start($status_cfg);
     PVE::ExtMetric::update_all($transactions, 'node', $nodename, $node_metric, 
$ctime);
     PVE::ExtMetric::transactions_finish($transactions);
@@ -232,12 +236,41 @@ sub update_qemu_status {
        }
        PVE::Cluster::broadcast_rrd("pve2.3-vm/$vmid", $data);
 
+       broadcast_rrd_pressure($ctime, $d, "pve2-metrics/vms/$vmid");
+
        PVE::ExtMetric::update_all($transactions, 'qemu', $vmid, $d, $ctime, 
$nodename);
     }
 
     PVE::ExtMetric::transactions_finish($transactions);
 }
 
+sub broadcast_rrd_pressure {
+    my ($ctime, $d, $path) = @_;
+
+    return if !defined($d->{pressure});
+
+    my $pressure = $d->{pressure};
+
+    foreach my $type (keys %{$pressure}) {
+       my $pressuretype = $pressure->{$type};
+
+       foreach my $kind (keys %{$pressuretype}) {
+           next if $kind ne 'some';
+           my $pressurekind = $pressuretype->{$kind};
+
+           foreach my $avg (keys %{$pressurekind}) {
+               next if $avg eq 'total';
+               my $value = $pressurekind->{$avg};
+               my $metric = "pressure_".$type."_".$kind."_".$avg;
+               my $data = $generate_rrd_string->([$ctime, $value]);
+               PVE::Cluster::broadcast_rrd("$path/$metric", $data);
+               $d->{$metric} = $value;
+           }
+       }
+    }
+    delete $d->{pressure};
+}
+
 sub remove_stale_lxc_consoles {
 
     my $vmstatus = PVE::LXC::vmstatus();
@@ -441,6 +474,8 @@ sub update_lxc_status {
        }
        PVE::Cluster::broadcast_rrd("pve2.3-vm/$vmid", $data);
 
+       broadcast_rrd_pressure($ctime, $d, "pve2-metrics/vms/$vmid");
+
        PVE::ExtMetric::update_all($transactions, 'lxc', $vmid, $d, $ctime, 
$nodename);
     }
     PVE::ExtMetric::transactions_finish($transactions);
-- 
2.30.2


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to