+ Optimize snmp requests get_multiple.
This commit is contained in:
parent
2eaa5854d8
commit
2e9cf95dd3
|
@ -350,9 +350,6 @@ sub get_multiple_table {
|
|||
$self->{maxrepetitions} =~ /^\d+$/) {
|
||||
$repeat_count = $self->{maxrepetitions};
|
||||
}
|
||||
|
||||
$repeat_count = floor($repeat_count / (scalar(keys %{$working_oids})));
|
||||
$repeat_count = 1 if ($repeat_count == 0);
|
||||
|
||||
# Quit if base not the same or 'ENDOFMIBVIEW' value. Need all oid finish otherwise we continue :)
|
||||
while (1) {
|
||||
|
@ -375,7 +372,9 @@ sub get_multiple_table {
|
|||
if ($self->is_snmpv1()) {
|
||||
$self->{session}->getnext($vb);
|
||||
} else {
|
||||
$self->{session}->getbulk(0, $repeat_count, $vb);
|
||||
my $current_repeat_count = floor($repeat_count / (scalar(keys %{$working_oids})));
|
||||
$current_repeat_count = 1 if ($current_repeat_count == 0);
|
||||
$self->{session}->getbulk(0, $current_repeat_count, $vb);
|
||||
}
|
||||
|
||||
# Error
|
||||
|
|
|
@ -38,13 +38,13 @@ package hardware::server::hp::proliant::snmp::mode::components::daacc;
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
my %map_daacc_status = {
|
||||
my %map_daacc_status = (
|
||||
1 => 'other',
|
||||
2 => 'invalid',
|
||||
3 => 'enabled',
|
||||
4 => 'tmpDisabled',
|
||||
5 => 'permDisabled',
|
||||
};
|
||||
);
|
||||
my %map_daacc_condition = (
|
||||
1 => 'other',
|
||||
2 => 'ok',
|
||||
|
|
|
@ -69,8 +69,8 @@ my $oid_cpqFcaPhyDrvStatus = '.1.3.6.1.4.1.232.16.2.5.1.1.6';
|
|||
sub load {
|
||||
my (%options) = @_;
|
||||
|
||||
push @{$options{request}}, { oid => $oid_cpqFcaLogDrvEntry, start => $mapping->{cpqFcaLogDrvFaultTol}->{oid}, end => $mapping->{cpqFcaLogDrvStatus}->{oid} };
|
||||
push @{$options{request}}, { oid => $oid_cpqFcaLogDrvCondition };
|
||||
push @{$options{request}}, { oid => $oid_cpqFcaPhyDrvCondition };
|
||||
push @{$options{request}}, { oid => $oid_cpqFcaPhyDrvStatus };
|
||||
}
|
||||
|
||||
sub check {
|
||||
|
|
|
@ -75,7 +75,7 @@ sub load {
|
|||
|
||||
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapEntry, start => $mapping->{cpqNicIfLogMapCondition}->{oid}, end => $mapping->{cpqNicIfLogMapStatus}->{oid} };
|
||||
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapDescription };
|
||||
push @{$options{request}}, { oid => $cpqNicIfLogMapAdapterCount };
|
||||
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapAdapterCount };
|
||||
}
|
||||
|
||||
sub check {
|
||||
|
@ -103,7 +103,7 @@ sub check {
|
|||
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
short_msg => sprintf("logical nic '%s' is %s (%s)",
|
||||
$nic_index, $result3->{cpqNicIfLogMapCondition}));
|
||||
$instance, $result3->{cpqNicIfLogMapCondition}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,8 +74,8 @@ my $oid_cpqScsiLogDrvStatus = '.1.3.6.1.4.1.232.5.2.3.1.1.5';
|
|||
sub load {
|
||||
my (%options) = @_;
|
||||
|
||||
push @{$options{request}}, { oid => $cpqScsiLogDrvStatus };
|
||||
push @{$options{request}}, { oid => $cpqScsiLogDrvCondition };
|
||||
push @{$options{request}}, { oid => $oid_cpqScsiLogDrvStatus };
|
||||
push @{$options{request}}, { oid => $oid_cpqScsiLogDrvCondition };
|
||||
}
|
||||
|
||||
sub check {
|
||||
|
@ -86,7 +86,7 @@ sub check {
|
|||
return if ($self->check_exclude(section => 'scsildrive'));
|
||||
|
||||
foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_cpqScsiLogDrvCondition}})) {
|
||||
next if ($oid !~ /^$mapping->{cpqScsiLogDrvCondition}->{oid}\.(.*)$/);
|
||||
next if ($oid !~ /^$mapping2->{cpqScsiLogDrvCondition}->{oid}\.(.*)$/);
|
||||
my $instance = $1;
|
||||
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_cpqScsiLogDrvStatus}, instance => $instance);
|
||||
my $result2 = $self->{snmp}->map_instance(mapping => $mapping2, results => $self->{results}->{$oid_cpqScsiLogDrvCondition}, instance => $instance);
|
||||
|
|
|
@ -100,9 +100,8 @@ sub check {
|
|||
$result->{cpqHeTemperatureThreshold},
|
||||
$result->{cpqHeTemperatureCondition}));
|
||||
my $exit = $self->get_severity(section => 'temperature', value => $result->{cpqHeTemperatureCondition});
|
||||
if (!$self->{output}->is_status(value => $temperature, compare => 'ok', litteral => 1)) {
|
||||
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
|
||||
$self->{output}->output_add(severity => $exit,
|
||||
$self->{output}->output_add(severity => ${$conditions{$temp_condition}}[1],
|
||||
short_msg => sprintf("temperature '%s' %s status is %s",
|
||||
$instance, $result->{cpqHeTemperatureLocale}, $result->{cpqHeTemperatureCondition}));
|
||||
}
|
||||
|
|
|
@ -344,7 +344,7 @@ sub run {
|
|||
'dactl', 'daacc', 'daldrive', 'dapdrive', 'fan', 'pnic', 'lnic', 'temperature');
|
||||
foreach (@components) {
|
||||
if (/$self->{option_results}->{component}/) {
|
||||
my $mod_name = "hardware::server::hp::proliant::snmp::mode::components::components::$_";
|
||||
my $mod_name = "hardware::server::hp::proliant::snmp::mode::components::$_";
|
||||
centreon::plugins::misc::mymodule_load(output => $self->{output}, module => $mod_name,
|
||||
error_msg => "Cannot load module '$mod_name'.");
|
||||
my $func = $mod_name->can('load');
|
||||
|
|
Loading…
Reference in New Issue