Add some global cluster stats for PVE

This commit is contained in:
Daniel Berteaud 2018-06-04 23:08:27 +02:00
parent 5d84a64595
commit c146554291

View File

@ -23,12 +23,27 @@ GetOptions(
if ($cluster){
my $cluster = from_json(qx($pvesh get /cluster/status 2>/dev/null));
$json->{status}->{all_online} = 1;
my @nodes = ();
foreach my $item (@{$cluster}){
if ($item->{type} eq 'cluster'){
$json->{$_} = $item->{$_} foreach (qw(quorate nodes name version));
last;
$json->{status}->{$_} = $item->{$_} foreach (qw(quorate nodes name version));
} elsif ($item->{type} eq 'node'){
push @nodes, $item->{name};
$json->{status}->{all_online} = 0 unless ($item->{online});
}
}
foreach my $node (@nodes){
my $n = from_json(qx($pvesh get /nodes/$node/status 2>/dev/null));
# Here we gather (and sum) some info about individual nodes to get the total number of
# CPU, the amount of memory etc...
$json->{memory}->{$_} += $n->{memory}->{$_} foreach(qw(free total used));
$json->{ksm}->{$_} += $n->{ksm}->{$_} foreach (qw(shared));
$json->{cpuinfo}->{$_} += $n->{cpuinfo}->{$_} foreach (qw(cpus sockets));
$json->{loadavg}[$_] += $n->{loadavg}[$_] foreach (0..2);
}
# We want average load avg of the cluster, not the sum of individual loads
$json->{loadavg}[$_] = sprintf "%.2f", $json->{loadavg}[$_] / $json->{status}->{nodes} foreach (0..2);
} elsif ($node){
foreach my $item (qw(status version subscription)){
$json->{$item} = from_json(qx(pvesh get /nodes/$node/$item 2>/dev/null));