Add average option #5517
This commit is contained in:
parent
229f50405d
commit
d39bd7c589
|
@ -50,6 +50,7 @@ sub new {
|
|||
{
|
||||
"warning:s" => { name => 'warning', default => '' },
|
||||
"critical:s" => { name => 'critical', default => '' },
|
||||
"average" => { name => 'average' },
|
||||
});
|
||||
|
||||
return $self;
|
||||
|
@ -93,22 +94,52 @@ sub run {
|
|||
# $options{snmp} = snmp object
|
||||
$self->{snmp} = $options{snmp};
|
||||
|
||||
my $oid_CountCpu = '.1.3.6.1.2.1.25.3.3.1.2';
|
||||
my $oid_CpuLoad1m = '.1.3.6.1.4.1.2021.10.1.3.1';
|
||||
my $oid_CpuLoad5m = '.1.3.6.1.4.1.2021.10.1.3.2';
|
||||
my $oid_CpuLoad15m = '.1.3.6.1.4.1.2021.10.1.3.3';
|
||||
|
||||
my $result = $self->{snmp}->get_leef(oids => [$oid_CpuLoad1m, $oid_CpuLoad5m, $oid_CpuLoad15m], nothing_quit => 1);
|
||||
|
||||
my $exit1 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad1m},
|
||||
threshold => [ { label => 'crit1', 'exit_litteral' => 'critical' }, { label => 'warn1', exit_litteral => 'warning' } ]);
|
||||
my $exit2 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad5m},
|
||||
threshold => [ { label => 'crit5', 'exit_litteral' => 'critical' }, { label => 'warn5', exit_litteral => 'warning' } ]);
|
||||
my $exit3 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad15m},
|
||||
threshold => [ { label => 'crit15', 'exit_litteral' => 'critical' }, { label => 'warn15', exit_litteral => 'warning' } ]);
|
||||
if (defined($self->{option_results}->{average})) {
|
||||
my $result2 = $self->{snmp}->get_table(oid => $oid_CountCpu);
|
||||
if (scalar(keys %$result2)<=0){
|
||||
$self->{output}->output_add(severity => 'unknown',
|
||||
short_msg => 'Unable to get number of CPUs');
|
||||
$self->{output}->display();
|
||||
$self->{output}->exit();
|
||||
}
|
||||
|
||||
my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2, $exit3 ]);
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
short_msg => sprintf("Load average: %s, %s, %s", $result->{$oid_CpuLoad1m}, $result->{$oid_CpuLoad5m}, $result->{$oid_CpuLoad15m}));
|
||||
my $countCpu = scalar(keys %$result2);
|
||||
|
||||
my $avgCpuLoad1m = sprintf ("%0.2f", $result->{$oid_CpuLoad1m} / $countCpu);
|
||||
my $avgCpuLoad5m = sprintf ("%0.2f", $result->{$oid_CpuLoad5m} / $countCpu);
|
||||
my $avgCpuLoad15m = sprintf ("%0.2f", $result->{$oid_CpuLoad15m} / $countCpu);
|
||||
|
||||
my $exit1 = $self->{perfdata}->threshold_check(value => $avgCpuLoad1m,
|
||||
threshold => [ { label => 'crit1', 'exit_litteral' => 'critical' }, { label => 'warn1', exit_litteral => 'warning' } ]);
|
||||
my $exit2 = $self->{perfdata}->threshold_check(value => $avgCpuLoad5m,
|
||||
threshold => [ { label => 'crit5', 'exit_litteral' => 'critical' }, { label => 'warn5', exit_litteral => 'warning' } ]);
|
||||
my $exit3 = $self->{perfdata}->threshold_check(value => $avgCpuLoad15m,
|
||||
threshold => [ { label => 'crit15', 'exit_litteral' => 'critical' }, { label => 'warn15', exit_litteral => 'warning' } ]);
|
||||
|
||||
my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2, $exit3 ]);
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
short_msg => sprintf("Load average: %s [%s/%s CPUs], %s [%s/%s CPUs], %s [%s/%s CPUs]", $avgCpuLoad1m, $result->{$oid_CpuLoad1m}, $countCpu,
|
||||
$avgCpuLoad5m, $result->{$oid_CpuLoad5m}, $countCpu,
|
||||
$avgCpuLoad15m, $result->{$oid_CpuLoad15m}, $countCpu));
|
||||
} else {
|
||||
my $exit1 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad1m},
|
||||
threshold => [ { label => 'crit1', 'exit_litteral' => 'critical' }, { label => 'warn1', exit_litteral => 'warning' } ]);
|
||||
my $exit2 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad5m},
|
||||
threshold => [ { label => 'crit5', 'exit_litteral' => 'critical' }, { label => 'warn5', exit_litteral => 'warning' } ]);
|
||||
my $exit3 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad15m},
|
||||
threshold => [ { label => 'crit15', 'exit_litteral' => 'critical' }, { label => 'warn15', exit_litteral => 'warning' } ]);
|
||||
|
||||
my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2, $exit3 ]);
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
short_msg => sprintf("Load average: %s, %s, %s", $result->{$oid_CpuLoad1m}, $result->{$oid_CpuLoad5m}, $result->{$oid_CpuLoad15m}));
|
||||
}
|
||||
|
||||
$self->{output}->perfdata_add(label => 'load1',
|
||||
value => $result->{$oid_CpuLoad1m},
|
||||
|
@ -148,6 +179,10 @@ Threshold warning (1min,5min,15min).
|
|||
|
||||
Threshold critical (1min,5min,15min).
|
||||
|
||||
=item B<--average>
|
||||
|
||||
Load average for the number of CPUs.
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
|
Loading…
Reference in New Issue