mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
+ 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+$/) {
|
$self->{maxrepetitions} =~ /^\d+$/) {
|
||||||
$repeat_count = $self->{maxrepetitions};
|
$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 :)
|
# Quit if base not the same or 'ENDOFMIBVIEW' value. Need all oid finish otherwise we continue :)
|
||||||
while (1) {
|
while (1) {
|
||||||
@ -375,7 +372,9 @@ sub get_multiple_table {
|
|||||||
if ($self->is_snmpv1()) {
|
if ($self->is_snmpv1()) {
|
||||||
$self->{session}->getnext($vb);
|
$self->{session}->getnext($vb);
|
||||||
} else {
|
} 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
|
# Error
|
||||||
|
@ -38,13 +38,13 @@ package hardware::server::hp::proliant::snmp::mode::components::daacc;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my %map_daacc_status = {
|
my %map_daacc_status = (
|
||||||
1 => 'other',
|
1 => 'other',
|
||||||
2 => 'invalid',
|
2 => 'invalid',
|
||||||
3 => 'enabled',
|
3 => 'enabled',
|
||||||
4 => 'tmpDisabled',
|
4 => 'tmpDisabled',
|
||||||
5 => 'permDisabled',
|
5 => 'permDisabled',
|
||||||
};
|
);
|
||||||
my %map_daacc_condition = (
|
my %map_daacc_condition = (
|
||||||
1 => 'other',
|
1 => 'other',
|
||||||
2 => 'ok',
|
2 => 'ok',
|
||||||
|
@ -69,8 +69,8 @@ my $oid_cpqFcaPhyDrvStatus = '.1.3.6.1.4.1.232.16.2.5.1.1.6';
|
|||||||
sub load {
|
sub load {
|
||||||
my (%options) = @_;
|
my (%options) = @_;
|
||||||
|
|
||||||
push @{$options{request}}, { oid => $oid_cpqFcaLogDrvEntry, start => $mapping->{cpqFcaLogDrvFaultTol}->{oid}, end => $mapping->{cpqFcaLogDrvStatus}->{oid} };
|
push @{$options{request}}, { oid => $oid_cpqFcaPhyDrvCondition };
|
||||||
push @{$options{request}}, { oid => $oid_cpqFcaLogDrvCondition };
|
push @{$options{request}}, { oid => $oid_cpqFcaPhyDrvStatus };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub check {
|
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_cpqNicIfLogMapEntry, start => $mapping->{cpqNicIfLogMapCondition}->{oid}, end => $mapping->{cpqNicIfLogMapStatus}->{oid} };
|
||||||
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapDescription };
|
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapDescription };
|
||||||
push @{$options{request}}, { oid => $cpqNicIfLogMapAdapterCount };
|
push @{$options{request}}, { oid => $oid_cpqNicIfLogMapAdapterCount };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub check {
|
sub check {
|
||||||
@ -103,7 +103,7 @@ sub check {
|
|||||||
if (!$self->{output}->is_status(value => $exit, 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 => $exit,
|
||||||
short_msg => sprintf("logical nic '%s' is %s (%s)",
|
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 {
|
sub load {
|
||||||
my (%options) = @_;
|
my (%options) = @_;
|
||||||
|
|
||||||
push @{$options{request}}, { oid => $cpqScsiLogDrvStatus };
|
push @{$options{request}}, { oid => $oid_cpqScsiLogDrvStatus };
|
||||||
push @{$options{request}}, { oid => $cpqScsiLogDrvCondition };
|
push @{$options{request}}, { oid => $oid_cpqScsiLogDrvCondition };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub check {
|
sub check {
|
||||||
@ -86,7 +86,7 @@ sub check {
|
|||||||
return if ($self->check_exclude(section => 'scsildrive'));
|
return if ($self->check_exclude(section => 'scsildrive'));
|
||||||
|
|
||||||
foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_cpqScsiLogDrvCondition}})) {
|
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 $instance = $1;
|
||||||
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_cpqScsiLogDrvStatus}, instance => $instance);
|
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);
|
my $result2 = $self->{snmp}->map_instance(mapping => $mapping2, results => $self->{results}->{$oid_cpqScsiLogDrvCondition}, instance => $instance);
|
||||||
|
@ -100,9 +100,8 @@ sub check {
|
|||||||
$result->{cpqHeTemperatureThreshold},
|
$result->{cpqHeTemperatureThreshold},
|
||||||
$result->{cpqHeTemperatureCondition}));
|
$result->{cpqHeTemperatureCondition}));
|
||||||
my $exit = $self->get_severity(section => 'temperature', value => $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 => $exit,
|
||||||
$self->{output}->output_add(severity => ${$conditions{$temp_condition}}[1],
|
|
||||||
short_msg => sprintf("temperature '%s' %s status is %s",
|
short_msg => sprintf("temperature '%s' %s status is %s",
|
||||||
$instance, $result->{cpqHeTemperatureLocale}, $result->{cpqHeTemperatureCondition}));
|
$instance, $result->{cpqHeTemperatureLocale}, $result->{cpqHeTemperatureCondition}));
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ sub run {
|
|||||||
'dactl', 'daacc', 'daldrive', 'dapdrive', 'fan', 'pnic', 'lnic', 'temperature');
|
'dactl', 'daacc', 'daldrive', 'dapdrive', 'fan', 'pnic', 'lnic', 'temperature');
|
||||||
foreach (@components) {
|
foreach (@components) {
|
||||||
if (/$self->{option_results}->{component}/) {
|
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,
|
centreon::plugins::misc::mymodule_load(output => $self->{output}, module => $mod_name,
|
||||||
error_msg => "Cannot load module '$mod_name'.");
|
error_msg => "Cannot load module '$mod_name'.");
|
||||||
my $func = $mod_name->can('load');
|
my $func = $mod_name->can('load');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user