(plugin) storage::dell::compellent::snmp - mode hardware add option --add-name-instance (#4510)

This commit is contained in:
qgarnier 2023-06-30 12:51:13 +02:00 committed by GitHub
parent 65ef6bca0c
commit a3a1d559f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 290 additions and 178 deletions

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scCacheStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1.3', map => \%map_sc_status }, scCacheStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1.3', map => \%map_sc_status },
scCacheName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1.4' }, scCacheName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1.4' }
}; };
my $oid_scCacheEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1'; my $oid_scCacheEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.28.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCacheEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCacheEntry}, instance => $instance);
next if ($self->check_filter(section => 'cache', instance => $instance)); next if ($self->check_filter(section => 'cache', instance => $instance, name => $result->{scCacheName}));
$self->{components}->{cache}->{total}++; $self->{components}->{cache}->{total}++;
$self->{output}->output_add(long_msg => sprintf("cache '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scCacheName}, $result->{scCacheStatus}, $instance, long_msg => sprintf(
)); "cache '%s' status is '%s' [instance: %s]",
$result->{scCacheName}, $result->{scCacheStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'cache', value => $result->{scCacheStatus}); my $exit = $self->get_severity(label => 'default', section => 'cache', name => $result->{scCacheName}, value => $result->{scCacheStatus});
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(
short_msg => sprintf("Cache '%s' status is '%s'", $result->{scCacheName}, $result->{scCacheStatus})); severity => $exit,
short_msg => sprintf("Cache '%s' status is '%s'", $result->{scCacheName}, $result->{scCacheStatus})
);
} }
} }
} }

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scCtlrStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1.3', map => \%map_sc_status }, scCtlrStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1.3', map => \%map_sc_status },
scCtlrName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1.4' }, scCtlrName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1.4' }
}; };
my $oid_scCtlrEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1'; my $oid_scCtlrEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.13.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrEntry}, instance => $instance);
next if ($self->check_filter(section => 'ctrl', instance => $instance)); next if ($self->check_filter(section => 'ctrl', instance => $instance, name => $result->{scCtlrName}));
$self->{components}->{ctrl}->{total}++; $self->{components}->{ctrl}->{total}++;
$self->{output}->output_add(long_msg => sprintf("controller '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scCtlrName}, $result->{scCtlrStatus}, $instance, long_msg => sprintf(
)); "controller '%s' status is '%s' [instance: %s]",
$result->{scCtlrName}, $result->{scCtlrStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'ctrl', value => $result->{scCtlrStatus}); my $exit = $self->get_severity(label => 'default', section => 'ctrl', name => $result->{scCtlrName}, value => $result->{scCtlrStatus});
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(
short_msg => sprintf("Controller '%s' status is '%s'", $result->{scCtlrName}, $result->{scCtlrStatus})); severity => $exit,
short_msg => sprintf("Controller '%s' status is '%s'", $result->{scCtlrName}, $result->{scCtlrStatus})
);
} }
} }
} }

View File

@ -31,7 +31,7 @@ my $mapping = {
scCtlrFanWarnLwrRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.8' }, scCtlrFanWarnLwrRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.8' },
scCtlrFanWarnUprRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.9' }, scCtlrFanWarnUprRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.9' },
scCtlrFanCritLwrRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.10' }, scCtlrFanCritLwrRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.10' },
scCtlrFanCritUprRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.11' }, scCtlrFanCritUprRpm => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.11' }
}; };
my $oid_scCtlrFanEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1'; my $oid_scCtlrFanEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.16.1';
@ -53,21 +53,32 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrFanEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrFanEntry}, instance => $instance);
next if ($self->check_filter(section => 'ctrlfan', instance => $instance)); next if ($self->check_filter(section => 'ctrlfan', instance => $instance, name => $result->{scCtlrFanName}));
$self->{components}->{ctrlfan}->{total}++; $self->{components}->{ctrlfan}->{total}++;
$self->{output}->output_add(long_msg => sprintf("controller fan '%s' status is '%s' [instance = %s] [value = %s]", $self->{output}->output_add(
long_msg => sprintf(
"controller fan '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrFanName}, $result->{scCtlrFanStatus}, $instance, $result->{scCtlrFanName}, $result->{scCtlrFanStatus}, $instance,
$result->{scCtlrFanCurrentRpm})); $result->{scCtlrFanCurrentRpm}
)
);
my $exit = $self->get_severity(label => 'default', section => 'ctrlfan', value => $result->{scCtlrFanStatus}); my $exit = $self->get_severity(label => 'default', section => 'ctrlfan', name => $result->{scCtlrFanName}, value => $result->{scCtlrFanStatus});
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(
short_msg => sprintf("Controller fan '%s' status is '%s'", $result->{scCtlrFanName}, $result->{scCtlrFanStatus})); severity => $exit,
short_msg => sprintf("Controller fan '%s' status is '%s'", $result->{scCtlrFanName}, $result->{scCtlrFanStatus})
);
} }
my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'ctrlfan', instance => $instance, value => $result->{scCtlrFanCurrentRpm}); my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(
section => 'ctrlfan',
instance => $instance,
name => $result->{scCtlrFanName},
value => $result->{scCtlrFanCurrentRpm}
);
if ($checked == 0) { if ($checked == 0) {
$result->{scCtlrFanWarnLwrRpm} = (defined($result->{scCtlrFanWarnLwrRpm}) && $result->{scCtlrFanWarnLwrRpm} =~ /[0-9]/) ? $result->{scCtlrFanWarnLwrRpm} = (defined($result->{scCtlrFanWarnLwrRpm}) && $result->{scCtlrFanWarnLwrRpm} =~ /[0-9]/) ?
$result->{scCtlrFanWarnLwrRpm} : ''; $result->{scCtlrFanWarnLwrRpm} : '';
@ -87,9 +98,12 @@ sub check {
} }
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2, $self->{output}->output_add(
short_msg => sprintf("Controller fan '%s' is %s rpm", $result->{scCtlrFanName}, $result->{scCtlrFanCurrentRpm})); severity => $exit2,
short_msg => sprintf("Controller fan '%s' is %s rpm", $result->{scCtlrFanName}, $result->{scCtlrFanCurrentRpm})
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'ctrlfan', unit => 'rpm', label => 'ctrlfan', unit => 'rpm',
nlabel => 'hardware.controller.fan.speed.rpm', nlabel => 'hardware.controller.fan.speed.rpm',

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scCtlrPowerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1.3', map => \%map_sc_status }, scCtlrPowerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1.3', map => \%map_sc_status },
scCtlrPowerName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1.4' }, scCtlrPowerName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1.4' }
}; };
my $oid_scCtlrPowerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1'; my $oid_scCtlrPowerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.17.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrPowerEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrPowerEntry}, instance => $instance);
next if ($self->check_filter(section => 'ctrlpower', instance => $instance)); next if ($self->check_filter(section => 'ctrlpower', instance => $instance, name => $result->{scCtlrPowerName}));
$self->{components}->{ctrlpower}->{total}++; $self->{components}->{ctrlpower}->{total}++;
$self->{output}->output_add(long_msg => sprintf("controller power supply '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scCtlrPowerName}, $result->{scCtlrPowerStatus}, $instance, long_msg => sprintf(
)); "controller power supply '%s' status is '%s' [instance: %s]",
$result->{scCtlrPowerName}, $result->{scCtlrPowerStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'ctrlpower', value => $result->{scCtlrPowerStatus}); my $exit = $self->get_severity(label => 'default', section => 'ctrlpower', name => $result->{scCtlrPowerName}, value => $result->{scCtlrPowerStatus});
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(
short_msg => sprintf("Controller power supply '%s' status is '%s'", $result->{scCtlrPowerName}, $result->{scCtlrPowerStatus})); severity => $exit,
short_msg => sprintf("Controller power supply '%s' status is '%s'", $result->{scCtlrPowerName}, $result->{scCtlrPowerStatus})
);
} }
} }
} }

View File

@ -31,7 +31,7 @@ my $mapping = {
scCtlrTempWarnLwrC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.8' }, scCtlrTempWarnLwrC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.8' },
scCtlrTempWarnUprC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.9' }, scCtlrTempWarnUprC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.9' },
scCtlrTempCritLwrC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.10' }, scCtlrTempCritLwrC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.10' },
scCtlrTempCritUprC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.11' }, scCtlrTempCritUprC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.11' }
}; };
my $oid_scCtlrTempEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1'; my $oid_scCtlrTempEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.19.1';
@ -53,21 +53,32 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrTempEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrTempEntry}, instance => $instance);
next if ($self->check_filter(section => 'ctrltemp', instance => $instance)); next if ($self->check_filter(section => 'ctrltemp', instance => $instance, name => $result->{scCtlrTempName}));
$self->{components}->{ctrltemp}->{total}++; $self->{components}->{ctrltemp}->{total}++;
$self->{output}->output_add(long_msg => sprintf("controller temperature '%s' status is '%s' [instance = %s] [value = %s]", $self->{output}->output_add(
long_msg => sprintf(
"controller temperature '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrTempName}, $result->{scCtlrTempStatus}, $instance, $result->{scCtlrTempName}, $result->{scCtlrTempStatus}, $instance,
$result->{scCtlrTempCurrentC})); $result->{scCtlrTempCurrentC}
)
);
my $exit = $self->get_severity(label => 'default', section => 'ctrltemp', value => $result->{scCtlrTempStatus}); my $exit = $self->get_severity(label => 'default', section => 'ctrltemp', name => $result->{scCtlrTempName}, value => $result->{scCtlrTempStatus});
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(
short_msg => sprintf("Controller temperature '%s' status is '%s'", $result->{scCtlrTempName}, $result->{scCtlrTempStatus})); severity => $exit,
short_msg => sprintf("Controller temperature '%s' status is '%s'", $result->{scCtlrTempName}, $result->{scCtlrTempStatus})
);
} }
my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'ctrltemp', instance => $instance, value => $result->{scCtlrTempCurrentC}); my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(
section => 'ctrltemp',
instance => $instance,
name => $result->{scCtlrTempName},
value => $result->{scCtlrTempCurrentC}
);
if ($checked == 0) { if ($checked == 0) {
$result->{scCtlrTempWarnLwrC} = (defined($result->{scCtlrTempWarnLwrC}) && $result->{scCtlrTempWarnLwrC} =~ /[0-9]/) ? $result->{scCtlrTempWarnLwrC} = (defined($result->{scCtlrTempWarnLwrC}) && $result->{scCtlrTempWarnLwrC} =~ /[0-9]/) ?
$result->{scCtlrTempWarnLwrC} : ''; $result->{scCtlrTempWarnLwrC} : '';
@ -87,9 +98,12 @@ sub check {
} }
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2, $self->{output}->output_add(
short_msg => sprintf("Controller temperature '%s' is %s C", $result->{scCtlrTempName}, $result->{scCtlrTempCurrentC})); severity => $exit2,
short_msg => sprintf("Controller temperature '%s' is %s C", $result->{scCtlrTempName}, $result->{scCtlrTempCurrentC})
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'ctrltemp', unit => 'C', label => 'ctrltemp', unit => 'C',
nlabel => 'hardware.controller.temperature.celsius', nlabel => 'hardware.controller.temperature.celsius',

View File

@ -31,7 +31,7 @@ my $mapping = {
scCtlrVoltageWarnLwrV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.8' }, scCtlrVoltageWarnLwrV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.8' },
scCtlrVoltageWarnUprV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.9' }, scCtlrVoltageWarnUprV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.9' },
scCtlrVoltageCritLwrV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.10' }, scCtlrVoltageCritLwrV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.10' },
scCtlrVoltageCritUprV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.11' }, scCtlrVoltageCritUprV => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.11' }
}; };
my $oid_scCtlrVoltageEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1'; my $oid_scCtlrVoltageEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.18.1';
@ -53,21 +53,32 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrVoltageEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scCtlrVoltageEntry}, instance => $instance);
next if ($self->check_filter(section => 'ctrlvoltage', instance => $instance)); next if ($self->check_filter(section => 'ctrlvoltage', instance => $instance, name => $result->{scCtlrVoltageName}));
$self->{components}->{ctrlvoltage}->{total}++; $self->{components}->{ctrlvoltage}->{total}++;
$self->{output}->output_add(long_msg => sprintf("controller voltage '%s' status is '%s' [instance = %s] [value = %s]", $self->{output}->output_add(
long_msg => sprintf(
"controller voltage '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus}, $instance, $result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus}, $instance,
$result->{scCtlrVoltageCurrentV})); $result->{scCtlrVoltageCurrentV}
)
);
my $exit = $self->get_severity(label => 'default', section => 'ctrlvoltage', value => $result->{scCtlrVoltageStatus}); my $exit = $self->get_severity(label => 'default', section => 'ctrlvoltage', name => $result->{scCtlrVoltageName}, value => $result->{scCtlrVoltageStatus});
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(
short_msg => sprintf("Controller voltage '%s' status is '%s'", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus})); severity => $exit,
short_msg => sprintf("Controller voltage '%s' status is '%s'", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus})
);
} }
my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'ctrlvoltage', instance => $instance, value => $result->{scCtlrVoltageCurrentV}); my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(
section => 'ctrlvoltage',
instance => $instance,
name => $result->{scCtlrVoltageName},
value => $result->{scCtlrVoltageCurrentV}
);
if ($checked == 0) { if ($checked == 0) {
$result->{scCtlrVoltageWarnLwrV} = (defined($result->{scCtlrVoltageWarnLwrV}) && $result->{scCtlrVoltageWarnLwrV} =~ /[0-9]/) ? $result->{scCtlrVoltageWarnLwrV} = (defined($result->{scCtlrVoltageWarnLwrV}) && $result->{scCtlrVoltageWarnLwrV} =~ /[0-9]/) ?
$result->{scCtlrVoltageWarnLwrV} : ''; $result->{scCtlrVoltageWarnLwrV} : '';
@ -87,9 +98,12 @@ sub check {
} }
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2, $self->{output}->output_add(
short_msg => sprintf("Controller voltage '%s' is %s V", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageCurrentV})); severity => $exit2,
short_msg => sprintf("Controller voltage '%s' is %s V", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageCurrentV})
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'ctrlvoltage', unit => 'V', label => 'ctrlvoltage', unit => 'V',
nlabel => 'hardware.controller.voltage.volt', nlabel => 'hardware.controller.voltage.volt',

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scDiskStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.3', map => \%map_sc_status }, scDiskStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.3', map => \%map_sc_status },
scDiskNamePosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.4' }, scDiskNamePosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.4' }
}; };
my $oid_scDiskEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1'; my $oid_scDiskEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.14.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scDiskEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scDiskEntry}, instance => $instance);
next if ($self->check_filter(section => 'disk', instance => $instance)); next if ($self->check_filter(section => 'disk', instance => $instance, name => $result->{scDiskNamePosition}));
$self->{components}->{disk}->{total}++; $self->{components}->{disk}->{total}++;
$self->{output}->output_add(long_msg => sprintf("disk '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scDiskNamePosition}, $result->{scDiskStatus}, $instance, long_msg => sprintf(
)); "disk '%s' status is '%s' [instance: %s]",
$result->{scDiskNamePosition}, $result->{scDiskStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'disk', value => $result->{scDiskStatus}); my $exit = $self->get_severity(label => 'default', section => 'disk', name => $result->{scDiskNamePosition}, value => $result->{scDiskStatus});
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(
short_msg => sprintf("Disk '%s' status is '%s'", $result->{scDiskNamePosition}, $result->{scDiskStatus})); severity => $exit,
short_msg => sprintf("Disk '%s' status is '%s'", $result->{scDiskNamePosition}, $result->{scDiskStatus})
);
} }
} }
} }

View File

@ -52,17 +52,17 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scDiskFolderEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scDiskFolderEntry}, instance => $instance);
next if ($self->check_filter(section => 'diskfolder', instance => $instance)); next if ($self->check_filter(section => 'diskfolder', instance => $instance, name => $result->{scDiskFolderName}));
$self->{components}->{diskfolder}->{total}++; $self->{components}->{diskfolder}->{total}++;
$self->{output}->output_add( $self->{output}->output_add(
long_msg => sprintf( long_msg => sprintf(
"disk folder '%s' status is '%s' [instance = %s]", "disk folder '%s' status is '%s' [instance: %s]",
$result->{scDiskFolderName}, $result->{scDiskFolderStatus}, $instance, $result->{scDiskFolderName}, $result->{scDiskFolderStatus}, $instance
) )
); );
my $exit = $self->get_severity(label => 'default', section => 'diskfolder', value => $result->{scDiskFolderStatus}); my $exit = $self->get_severity(label => 'default', section => 'diskfolder', name => $result->{scDiskFolderName}, value => $result->{scDiskFolderStatus});
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( $self->{output}->output_add(
severity => $exit, severity => $exit,

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scEnclStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1.3', map => \%map_sc_status }, scEnclStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1.3', map => \%map_sc_status },
scEnclName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1.4' }, scEnclName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1.4' }
}; };
my $oid_scEnclEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1'; my $oid_scEnclEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.15.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclEntry}, instance => $instance);
next if ($self->check_filter(section => 'encl', instance => $instance)); next if ($self->check_filter(section => 'encl', instance => $instance, name => $result->{scEnclName}));
$self->{components}->{encl}->{total}++; $self->{components}->{encl}->{total}++;
$self->{output}->output_add(long_msg => sprintf("enclosure '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scEnclName}, $result->{scEnclStatus}, $instance, long_msg => sprintf(
)); "enclosure '%s' status is '%s' [instance: %s]",
$result->{scEnclName}, $result->{scEnclStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'encl', value => $result->{scEnclStatus}); my $exit = $self->get_severity(label => 'default', section => 'encl', name => $result->{scEnclName}, value => $result->{scEnclStatus});
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(
short_msg => sprintf("Enclosure '%s' status is '%s'", $result->{scEnclName}, $result->{scEnclStatus})); severity => $exit,
short_msg => sprintf("Enclosure '%s' status is '%s'", $result->{scEnclName}, $result->{scEnclStatus})
);
} }
} }
} }

View File

@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclFanEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclFanEntry}, instance => $instance);
next if ($self->check_filter(section => 'enclfan', instance => $instance)); next if ($self->check_filter(section => 'enclfan', instance => $instance, name => $result->{scEnclFanLocation}));
$self->{components}->{enclfan}->{total}++; $self->{components}->{enclfan}->{total}++;
$self->{output}->output_add(long_msg => sprintf("enclosure fan '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
long_msg => sprintf(
"enclosure fan '%s' status is '%s' [instance: %s]",
$result->{scEnclFanLocation}, $result->{scEnclFanStatus}, $instance, $result->{scEnclFanLocation}, $result->{scEnclFanStatus}, $instance,
)); )
);
my $exit = $self->get_severity(label => 'default', section => 'enclfan', value => $result->{scEnclFanStatus}); my $exit = $self->get_severity(label => 'default', section => 'enclfan', name => $result->{scEnclFanLocation}, value => $result->{scEnclFanStatus});
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(
short_msg => sprintf("Enclosure fan '%s' status is '%s'", $result->{scEnclFanLocation}, $result->{scEnclFanStatus})); severity => $exit,
short_msg => sprintf("Enclosure fan '%s' status is '%s'", $result->{scEnclFanLocation}, $result->{scEnclFanStatus})
);
} }
} }
} }

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scEnclIoModStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1.3', map => \%map_sc_status }, scEnclIoModStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1.3', map => \%map_sc_status },
scEnclIoModPosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1.4' }, scEnclIoModPosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1.4' }
}; };
my $oid_scEnclIoModEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1'; my $oid_scEnclIoModEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.22.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclIoModEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclIoModEntry}, instance => $instance);
next if ($self->check_filter(section => 'encliomod', instance => $instance)); next if ($self->check_filter(section => 'encliomod', instance => $instance, name => $result->{scEnclIoModPosition}));
$self->{components}->{encliomod}->{total}++; $self->{components}->{encliomod}->{total}++;
$self->{output}->output_add(long_msg => sprintf("enclosure I/O module '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scEnclIoModPosition}, $result->{scEnclIoModStatus}, $instance, long_msg => sprintf(
)); "enclosure I/O module '%s' status is '%s' [instance: %s]",
$result->{scEnclIoModPosition}, $result->{scEnclIoModStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'encliomod', value => $result->{scEnclIoModStatus}); my $exit = $self->get_severity(label => 'default', section => 'encliomod', name => $result->{scEnclIoModPosition}, value => $result->{scEnclIoModStatus});
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(
short_msg => sprintf("Enclosure I/O module '%s' status is '%s'", $result->{scEnclIoModPosition}, $result->{scEnclIoModStatus})); severity => $exit,
short_msg => sprintf("Enclosure I/O module '%s' status is '%s'", $result->{scEnclIoModPosition}, $result->{scEnclIoModStatus})
);
} }
} }
} }

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scEnclPowerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1.3', map => \%map_sc_status }, scEnclPowerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1.3', map => \%map_sc_status },
scEnclPowerPosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1.4' }, scEnclPowerPosition => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1.4' }
}; };
my $oid_scEnclPowerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1'; my $oid_scEnclPowerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.21.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclPowerEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclPowerEntry}, instance => $instance);
next if ($self->check_filter(section => 'enclpower', instance => $instance)); next if ($self->check_filter(section => 'enclpower', instance => $instance, name => $result->{scEnclPowerPosition}));
$self->{components}->{enclpower}->{total}++; $self->{components}->{enclpower}->{total}++;
$self->{output}->output_add(long_msg => sprintf("enclosure power supply '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scEnclPowerPosition}, $result->{scEnclPowerStatus}, $instance, long_msg => sprintf(
)); "enclosure power supply '%s' status is '%s' [instance: %s]",
$result->{scEnclPowerPosition}, $result->{scEnclPowerStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'enclpower', value => $result->{scEnclPowerStatus}); my $exit = $self->get_severity(label => 'default', section => 'enclpower', name => $result->{scEnclPowerPosition}, value => $result->{scEnclPowerStatus});
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(
short_msg => sprintf("Enclosure power supply '%s' status is '%s'", $result->{scEnclPowerPosition}, $result->{scEnclPowerStatus})); severity => $exit,
short_msg => sprintf("Enclosure power supply '%s' status is '%s'", $result->{scEnclPowerPosition}, $result->{scEnclPowerStatus})
);
} }
} }
} }

View File

@ -27,7 +27,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scEnclTempStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.3', map => \%map_sc_status }, scEnclTempStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.3', map => \%map_sc_status },
scEnclTempLocation => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.4' }, scEnclTempLocation => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.4' },
scEnclTempCurrentC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.5' }, scEnclTempCurrentC => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.5' }
}; };
my $oid_scEnclTempEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1'; my $oid_scEnclTempEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.23.1';
@ -49,35 +49,48 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclTempEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scEnclTempEntry}, instance => $instance);
next if ($self->check_filter(section => 'encltemp', instance => $instance)); next if ($self->check_filter(section => 'encltemp', instance => $instance, name => $result->{scEnclTempLocation}));
$self->{components}->{encltemp}->{total}++; $self->{components}->{encltemp}->{total}++;
$self->{output}->output_add(long_msg => sprintf("enclosure temperature '%s' status is '%s' [instance = %s] [value = %s]", $self->{output}->output_add(
long_msg => sprintf(
"enclosure temperature '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scEnclTempLocation}, $result->{scEnclTempStatus}, $instance, $result->{scEnclTempLocation}, $result->{scEnclTempStatus}, $instance,
defined($result->{scEnclTempCurrentC}) ? $result->{scEnclTempCurrentC} : '-')); defined($result->{scEnclTempCurrentC}) ? $result->{scEnclTempCurrentC} : '-'
)
);
my $exit = $self->get_severity(label => 'default', section => 'encltemp', value => $result->{scEnclTempStatus}); my $exit = $self->get_severity(label => 'default', section => 'encltemp', name => $result->{scEnclTempLocation}, value => $result->{scEnclTempStatus});
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(
short_msg => sprintf("Enclosure temperature '%s' status is '%s'", $result->{scEnclTempLocation}, $result->{scEnclTempStatus})); severity => $exit,
short_msg => sprintf("Enclosure temperature '%s' status is '%s'", $result->{scEnclTempLocation}, $result->{scEnclTempStatus})
);
} }
next if (!defined($result->{scEnclTempCurrentC})); next if (!defined($result->{scEnclTempCurrentC}));
my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'encltemp', instance => $instance, value => $result->{scEnclTempCurrentC}); my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(
section => 'encltemp',
instance => $instance,
name => $result->{scEnclTempLocation},
value => $result->{scEnclTempCurrentC}
);
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2, $self->{output}->output_add(
short_msg => sprintf("Enclosure temperature '%s' is %s C", $result->{scEnclTempLocation}, $result->{scEnclTempCurrentC})); severity => $exit2,
short_msg => sprintf("Enclosure temperature '%s' is %s C", $result->{scEnclTempLocation}, $result->{scEnclTempCurrentC})
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'encltemp', unit => 'C', label => 'encltemp', unit => 'C',
nlabel => 'hardware.enclosure.temperature.celsius', nlabel => 'hardware.enclosure.temperature.celsius',
instances => $instance, instances => $instance,
value => $result->{scEnclTempCurrentC}, value => $result->{scEnclTempCurrentC},
warning => $warn, warning => $warn,
critical => $crit, critical => $crit
); );
} }
} }

View File

@ -32,7 +32,7 @@ our @EXPORT_OK = qw(%map_sc_status);
%map_sc_status = ( %map_sc_status = (
1 => 'up', 1 => 'up',
2 => 'down', 2 => 'down',
3 => 'degraded', 3 => 'degraded'
); );
1; 1;

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scScStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1.3', map => \%map_sc_status }, scScStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1.3', map => \%map_sc_status },
scScName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1.4' }, scScName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1.4' }
}; };
my $oid_scScEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1'; my $oid_scScEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.29.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scScEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scScEntry}, instance => $instance);
next if ($self->check_filter(section => 'sc', instance => $instance)); next if ($self->check_filter(section => 'sc', instance => $instance, name => $result->{scScName}));
$self->{components}->{sc}->{total}++; $self->{components}->{sc}->{total}++;
$self->{output}->output_add(long_msg => sprintf("storage center '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scScName}, $result->{scScStatus}, $instance, long_msg => sprintf(
)); "storage center '%s' status is '%s' [instance: %s]",
$result->{scScName}, $result->{scScStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'sc', value => $result->{scScStatus}); my $exit = $self->get_severity(label => 'default', section => 'sc', name => $result->{scScName}, value => $result->{scScStatus});
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(
short_msg => sprintf("Storage center '%s' status is '%s'", $result->{scScName}, $result->{scScStatus})); severity => $exit,
short_msg => sprintf("Storage center '%s' status is '%s'", $result->{scScName}, $result->{scScStatus})
);
} }
} }
} }

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scServerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.3', map => \%map_sc_status }, scServerStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.3', map => \%map_sc_status },
scServerName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.4' }, scServerName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.4' }
}; };
my $oid_scServerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1'; my $oid_scServerEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.27.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scServerEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scServerEntry}, instance => $instance);
next if ($self->check_filter(section => 'server', instance => $instance)); next if ($self->check_filter(section => 'server', instance => $instance, name => $result->{scServerName}));
$self->{components}->{server}->{total}++; $self->{components}->{server}->{total}++;
$self->{output}->output_add(long_msg => sprintf("server '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scServerName}, $result->{scServerStatus}, $instance, long_msg => sprintf(
)); "server '%s' status is '%s' [instance: %s]",
$result->{scServerName}, $result->{scServerStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'server', value => $result->{scServerStatus}); my $exit = $self->get_severity(label => 'default', section => 'server', name => $result->{scServerName}, value => $result->{scServerStatus});
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(
short_msg => sprintf("Server '%s' status is '%s'", $result->{scServerName}, $result->{scServerStatus})); severity => $exit,
short_msg => sprintf("Server '%s' status is '%s'", $result->{scServerName}, $result->{scServerStatus})
);
} }
} }
} }

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = { my $mapping = {
scVolumeStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1.3', map => \%map_sc_status }, scVolumeStatus => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1.3', map => \%map_sc_status },
scVolumeName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1.4' }, scVolumeName => { oid => '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1.4' }
}; };
my $oid_scVolumeEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1'; my $oid_scVolumeEntry = '.1.3.6.1.4.1.674.11000.2000.500.1.2.26.1';
@ -48,17 +48,22 @@ sub check {
my $instance = $1; my $instance = $1;
my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scVolumeEntry}, instance => $instance); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_scVolumeEntry}, instance => $instance);
next if ($self->check_filter(section => 'volume', instance => $instance)); next if ($self->check_filter(section => 'volume', instance => $instance, name => $result->{scVolumeName}));
$self->{components}->{volume}->{total}++; $self->{components}->{volume}->{total}++;
$self->{output}->output_add(long_msg => sprintf("volume '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{scVolumeName}, $result->{scVolumeStatus}, $instance, long_msg => sprintf(
)); "volume '%s' status is '%s' [instance: %s]",
$result->{scVolumeName}, $result->{scVolumeStatus}, $instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'volume', value => $result->{scVolumeStatus}); my $exit = $self->get_severity(label => 'default', section => 'volume', name => $result->{scVolumeName}, value => $result->{scVolumeStatus});
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(
short_msg => sprintf("Volume '%s' status is '%s'", $result->{scVolumeName}, $result->{scVolumeStatus})); severity => $exit,
short_msg => sprintf("Volume '%s' status is '%s'", $result->{scVolumeName}, $result->{scVolumeStatus})
);
} }
} }
} }

View File

@ -146,4 +146,3 @@ You can use the following variables: %{status}
=back =back
=cut =cut

View File

@ -85,6 +85,10 @@ Can be: 'ctrl', 'disk', 'diskfolder', 'encl', 'ctrlfan', 'ctrlpower', 'ctrlvolta
Exclude the items given as a comma-separated list (example: --filter=ctrlfan --filter=enclpower). Exclude the items given as a comma-separated list (example: --filter=ctrlfan --filter=enclpower).
You can also exclude items from specific instances: --filter=ctrlfan,1 You can also exclude items from specific instances: --filter=ctrlfan,1
=item B<--add-name-instance>
Add literal description for instance value (used in filter and threshold options).
=item B<--no-component> =item B<--no-component>
Define the expected status if no components are found (default: critical). Define the expected status if no components are found (default: critical).

View File

@ -29,7 +29,6 @@ sub new {
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$self->{version} = '1.0';
$self->{modes} = { $self->{modes} = {
'global-status' => 'storage::dell::compellent::snmp::mode::globalstatus', 'global-status' => 'storage::dell::compellent::snmp::mode::globalstatus',
'hardware' => 'storage::dell::compellent::snmp::mode::hardware', 'hardware' => 'storage::dell::compellent::snmp::mode::hardware',