(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 = {
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';
@ -47,18 +47,23 @@ sub check {
next if ($oid !~ /^$mapping->{scCacheStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
long_msg => sprintf(
"cache '%s' status is '%s' [instance: %s]",
$result->{scCacheName}, $result->{scCacheStatus}, $instance
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Cache '%s' status is '%s'", $result->{scCacheName}, $result->{scCacheStatus}));
$self->{output}->output_add(
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 = {
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';
@ -47,18 +47,23 @@ sub check {
next if ($oid !~ /^$mapping->{scCtlrStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
long_msg => sprintf(
"controller '%s' status is '%s' [instance: %s]",
$result->{scCtlrName}, $result->{scCtlrStatus}, $instance
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Controller '%s' status is '%s'", $result->{scCtlrName}, $result->{scCtlrStatus}));
$self->{output}->output_add(
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' },
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' },
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';
@ -52,22 +52,33 @@ sub check {
next if ($oid !~ /^$mapping->{scCtlrFanStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(long_msg => sprintf("controller fan '%s' status is '%s' [instance = %s] [value = %s]",
$result->{scCtlrFanName}, $result->{scCtlrFanStatus}, $instance,
$result->{scCtlrFanCurrentRpm}));
my $exit = $self->get_severity(label => 'default', section => 'ctrlfan', value => $result->{scCtlrFanStatus});
$self->{output}->output_add(
long_msg => sprintf(
"controller fan '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrFanName}, $result->{scCtlrFanStatus}, $instance,
$result->{scCtlrFanCurrentRpm}
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Controller fan '%s' status is '%s'", $result->{scCtlrFanName}, $result->{scCtlrFanStatus}));
$self->{output}->output_add(
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) {
$result->{scCtlrFanWarnLwrRpm} = (defined($result->{scCtlrFanWarnLwrRpm}) && $result->{scCtlrFanWarnLwrRpm} =~ /[0-9]/) ?
$result->{scCtlrFanWarnLwrRpm} : '';
@ -81,15 +92,18 @@ sub check {
my $crit_th = $result->{scCtlrFanCritLwrRpm} . ':' . $result->{scCtlrFanCritUprRpm};
$self->{perfdata}->threshold_validate(label => 'warning-ctrlfan-instance-' . $instance, value => $warn_th);
$self->{perfdata}->threshold_validate(label => 'critical-ctrlfan-instance-' . $instance, value => $crit_th);
$warn = $self->{perfdata}->get_perfdata_for_output(label => 'warning-ctrlfan-instance-' . $instance);
$crit = $self->{perfdata}->get_perfdata_for_output(label => 'critical-ctrlfan-instance-' . $instance);
}
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2,
short_msg => sprintf("Controller fan '%s' is %s rpm", $result->{scCtlrFanName}, $result->{scCtlrFanCurrentRpm}));
$self->{output}->output_add(
severity => $exit2,
short_msg => sprintf("Controller fan '%s' is %s rpm", $result->{scCtlrFanName}, $result->{scCtlrFanCurrentRpm})
);
}
$self->{output}->perfdata_add(
label => 'ctrlfan', unit => '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 = {
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';
@ -47,18 +47,23 @@ sub check {
next if ($oid !~ /^$mapping->{scCtlrPowerStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
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', name => $result->{scCtlrPowerName}, value => $result->{scCtlrPowerStatus});
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Controller power supply '%s' status is '%s'", $result->{scCtlrPowerName}, $result->{scCtlrPowerStatus}));
$self->{output}->output_add(
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' },
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' },
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';
@ -52,22 +52,33 @@ sub check {
next if ($oid !~ /^$mapping->{scCtlrTempStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(long_msg => sprintf("controller temperature '%s' status is '%s' [instance = %s] [value = %s]",
$result->{scCtlrTempName}, $result->{scCtlrTempStatus}, $instance,
$result->{scCtlrTempCurrentC}));
my $exit = $self->get_severity(label => 'default', section => 'ctrltemp', value => $result->{scCtlrTempStatus});
$self->{output}->output_add(
long_msg => sprintf(
"controller temperature '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrTempName}, $result->{scCtlrTempStatus}, $instance,
$result->{scCtlrTempCurrentC}
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Controller temperature '%s' status is '%s'", $result->{scCtlrTempName}, $result->{scCtlrTempStatus}));
$self->{output}->output_add(
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) {
$result->{scCtlrTempWarnLwrC} = (defined($result->{scCtlrTempWarnLwrC}) && $result->{scCtlrTempWarnLwrC} =~ /[0-9]/) ?
$result->{scCtlrTempWarnLwrC} : '';
@ -85,11 +96,14 @@ sub check {
$warn = $self->{perfdata}->get_perfdata_for_output(label => 'warning-ctrltemp-instance-' . $instance);
$crit = $self->{perfdata}->get_perfdata_for_output(label => 'critical-ctrltemp-instance-' . $instance);
}
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2,
short_msg => sprintf("Controller temperature '%s' is %s C", $result->{scCtlrTempName}, $result->{scCtlrTempCurrentC}));
$self->{output}->output_add(
severity => $exit2,
short_msg => sprintf("Controller temperature '%s' is %s C", $result->{scCtlrTempName}, $result->{scCtlrTempCurrentC})
);
}
$self->{output}->perfdata_add(
label => 'ctrltemp', unit => 'C',
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' },
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' },
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';
@ -53,21 +53,32 @@ sub check {
my $instance = $1;
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->{output}->output_add(long_msg => sprintf("controller voltage '%s' status is '%s' [instance = %s] [value = %s]",
$result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus}, $instance,
$result->{scCtlrVoltageCurrentV}));
my $exit = $self->get_severity(label => 'default', section => 'ctrlvoltage', value => $result->{scCtlrVoltageStatus});
$self->{output}->output_add(
long_msg => sprintf(
"controller voltage '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus}, $instance,
$result->{scCtlrVoltageCurrentV}
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Controller voltage '%s' status is '%s'", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageStatus}));
$self->{output}->output_add(
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) {
$result->{scCtlrVoltageWarnLwrV} = (defined($result->{scCtlrVoltageWarnLwrV}) && $result->{scCtlrVoltageWarnLwrV} =~ /[0-9]/) ?
$result->{scCtlrVoltageWarnLwrV} : '';
@ -85,11 +96,14 @@ sub check {
$warn = $self->{perfdata}->get_perfdata_for_output(label => 'warning-ctrlvoltage-instance-' . $instance);
$crit = $self->{perfdata}->get_perfdata_for_output(label => 'critical-ctrlvoltage-instance-' . $instance);
}
if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit2,
short_msg => sprintf("Controller voltage '%s' is %s V", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageCurrentV}));
$self->{output}->output_add(
severity => $exit2,
short_msg => sprintf("Controller voltage '%s' is %s V", $result->{scCtlrVoltageName}, $result->{scCtlrVoltageCurrentV})
);
}
$self->{output}->perfdata_add(
label => 'ctrlvoltage', unit => 'V',
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
long_msg => sprintf(
"disk '%s' status is '%s' [instance: %s]",
$result->{scDiskNamePosition}, $result->{scDiskStatus}, $instance
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Disk '%s' status is '%s'", $result->{scDiskNamePosition}, $result->{scDiskStatus}));
$self->{output}->output_add(
severity => $exit,
short_msg => sprintf("Disk '%s' status is '%s'", $result->{scDiskNamePosition}, $result->{scDiskStatus})
);
}
}
}

View File

@ -51,18 +51,18 @@ sub check {
next if ($oid !~ /^$mapping->{scDiskFolderStatus}->{oid}\.(.*)$/);
my $instance = $1;
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->{output}->output_add(
long_msg => sprintf(
"disk folder '%s' status is '%s' [instance = %s]",
$result->{scDiskFolderName}, $result->{scDiskFolderStatus}, $instance,
"disk folder '%s' status is '%s' [instance: %s]",
$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)) {
$self->{output}->output_add(
severity => $exit,

View File

@ -26,7 +26,7 @@ use storage::dell::compellent::snmp::mode::components::resources qw(%map_sc_stat
my $mapping = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
long_msg => sprintf(
"enclosure '%s' status is '%s' [instance: %s]",
$result->{scEnclName}, $result->{scEnclStatus}, $instance
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Enclosure '%s' status is '%s'", $result->{scEnclName}, $result->{scEnclStatus}));
$self->{output}->output_add(
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 $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->{output}->output_add(long_msg => sprintf("enclosure fan '%s' status is '%s' [instance = %s]",
$result->{scEnclFanLocation}, $result->{scEnclFanStatus}, $instance,
));
my $exit = $self->get_severity(label => 'default', section => 'enclfan', value => $result->{scEnclFanStatus});
$self->{output}->output_add(
long_msg => sprintf(
"enclosure fan '%s' status is '%s' [instance: %s]",
$result->{scEnclFanLocation}, $result->{scEnclFanStatus}, $instance,
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Enclosure fan '%s' status is '%s'", $result->{scEnclFanLocation}, $result->{scEnclFanStatus}));
$self->{output}->output_add(
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
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', name => $result->{scEnclIoModPosition}, value => $result->{scEnclIoModStatus});
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Enclosure I/O module '%s' status is '%s'", $result->{scEnclIoModPosition}, $result->{scEnclIoModStatus}));
$self->{output}->output_add(
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
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', name => $result->{scEnclPowerPosition}, value => $result->{scEnclPowerStatus});
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Enclosure power supply '%s' status is '%s'", $result->{scEnclPowerPosition}, $result->{scEnclPowerStatus}));
$self->{output}->output_add(
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 = {
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' },
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';
@ -49,35 +49,48 @@ sub check {
my $instance = $1;
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->{output}->output_add(long_msg => sprintf("enclosure temperature '%s' status is '%s' [instance = %s] [value = %s]",
$result->{scEnclTempLocation}, $result->{scEnclTempStatus}, $instance,
defined($result->{scEnclTempCurrentC}) ? $result->{scEnclTempCurrentC} : '-'));
my $exit = $self->get_severity(label => 'default', section => 'encltemp', value => $result->{scEnclTempStatus});
$self->{output}->output_add(
long_msg => sprintf(
"enclosure temperature '%s' status is '%s' [instance: %s] [value: %s]",
$result->{scEnclTempLocation}, $result->{scEnclTempStatus}, $instance,
defined($result->{scEnclTempCurrentC}) ? $result->{scEnclTempCurrentC} : '-'
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Enclosure temperature '%s' status is '%s'", $result->{scEnclTempLocation}, $result->{scEnclTempStatus}));
$self->{output}->output_add(
severity => $exit,
short_msg => sprintf("Enclosure temperature '%s' status is '%s'", $result->{scEnclTempLocation}, $result->{scEnclTempStatus})
);
}
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)) {
$self->{output}->output_add(severity => $exit2,
short_msg => sprintf("Enclosure temperature '%s' is %s C", $result->{scEnclTempLocation}, $result->{scEnclTempCurrentC}));
$self->{output}->output_add(
severity => $exit2,
short_msg => sprintf("Enclosure temperature '%s' is %s C", $result->{scEnclTempLocation}, $result->{scEnclTempCurrentC})
);
}
$self->{output}->perfdata_add(
label => 'encltemp', unit => 'C',
nlabel => 'hardware.enclosure.temperature.celsius',
instances => $instance,
value => $result->{scEnclTempCurrentC},
warning => $warn,
critical => $crit,
critical => $crit
);
}
}

View File

@ -32,7 +32,7 @@ our @EXPORT_OK = qw(%map_sc_status);
%map_sc_status = (
1 => 'up',
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
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', name => $result->{scScName}, value => $result->{scScStatus});
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Storage center '%s' status is '%s'", $result->{scScName}, $result->{scScStatus}));
$self->{output}->output_add(
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(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});
$self->{output}->output_add(
long_msg => sprintf(
"server '%s' status is '%s' [instance: %s]",
$result->{scServerName}, $result->{scServerStatus}, $instance
)
);
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Server '%s' status is '%s'", $result->{scServerName}, $result->{scServerStatus}));
$self->{output}->output_add(
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 = {
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';
@ -48,17 +48,22 @@ sub check {
my $instance = $1;
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->{output}->output_add(long_msg => sprintf("volume '%s' status is '%s' [instance = %s]",
$result->{scVolumeName}, $result->{scVolumeStatus}, $instance,
));
$self->{output}->output_add(
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)) {
$self->{output}->output_add(severity => $exit,
short_msg => sprintf("Volume '%s' status is '%s'", $result->{scVolumeName}, $result->{scVolumeStatus}));
$self->{output}->output_add(
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
=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).
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>
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);
bless $self, $class;
$self->{version} = '1.0';
$self->{modes} = {
'global-status' => 'storage::dell::compellent::snmp::mode::globalstatus',
'hardware' => 'storage::dell::compellent::snmp::mode::hardware',