[pve-devel] [PATCH pve-manager 1/3] pvestatd: qemu/lxc/host : broadcast rrd pressure metrics
Alexandre Derumier
aderumier at odiso.com
Wed May 25 08:52:14 CEST 2022
only "some" values for now, not sure we need full values
Signed-off-by: Alexandre Derumier <aderumier at 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
More information about the pve-devel
mailing list