Add average option #5517
This commit is contained in:
parent
229f50405d
commit
d39bd7c589
|
@ -50,6 +50,7 @@ sub new {
|
||||||
{
|
{
|
||||||
"warning:s" => { name => 'warning', default => '' },
|
"warning:s" => { name => 'warning', default => '' },
|
||||||
"critical:s" => { name => 'critical', default => '' },
|
"critical:s" => { name => 'critical', default => '' },
|
||||||
|
"average" => { name => 'average' },
|
||||||
});
|
});
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
|
@ -92,23 +93,53 @@ sub run {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
# $options{snmp} = snmp object
|
# $options{snmp} = snmp object
|
||||||
$self->{snmp} = $options{snmp};
|
$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_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_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 $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 $result = $self->{snmp}->get_leef(oids => [$oid_CpuLoad1m, $oid_CpuLoad5m, $oid_CpuLoad15m], nothing_quit => 1);
|
||||||
|
|
||||||
|
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 $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 $exit1 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad1m},
|
my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2, $exit3 ]);
|
||||||
threshold => [ { label => 'crit1', 'exit_litteral' => 'critical' }, { label => 'warn1', exit_litteral => 'warning' } ]);
|
$self->{output}->output_add(severity => $exit,
|
||||||
my $exit2 = $self->{perfdata}->threshold_check(value => $result->{$oid_CpuLoad5m},
|
short_msg => sprintf("Load average: %s, %s, %s", $result->{$oid_CpuLoad1m}, $result->{$oid_CpuLoad5m}, $result->{$oid_CpuLoad15m}));
|
||||||
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',
|
$self->{output}->perfdata_add(label => 'load1',
|
||||||
value => $result->{$oid_CpuLoad1m},
|
value => $result->{$oid_CpuLoad1m},
|
||||||
|
@ -148,6 +179,10 @@ Threshold warning (1min,5min,15min).
|
||||||
|
|
||||||
Threshold critical (1min,5min,15min).
|
Threshold critical (1min,5min,15min).
|
||||||
|
|
||||||
|
=item B<--average>
|
||||||
|
|
||||||
|
Load average for the number of CPUs.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
Loading…
Reference in New Issue