diff --git a/zabbix_scripts/check_pve_sudo b/zabbix_scripts/check_pve_sudo index b930110..e394620 100644 --- a/zabbix_scripts/check_pve_sudo +++ b/zabbix_scripts/check_pve_sudo @@ -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));