Add average option #5517

This commit is contained in:
Kevin Duret 2014-05-02 15:56:18 +02:00
parent 229f50405d
commit d39bd7c589
1 changed files with 46 additions and 11 deletions

View File

@ -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