move supermicro superdoctor

This commit is contained in:
garnier-quentin 2020-02-28 09:01:53 +01:00
parent fb5d3c6505
commit 7e612896f8
2 changed files with 101 additions and 53 deletions

View File

@ -18,7 +18,7 @@
# limitations under the License. # limitations under the License.
# #
package hardware::server::supermicro::snmp::mode::hardware; package hardware::server::supermicro::superdoctor::snmp::mode::hardware;
use base qw(centreon::plugins::templates::hardware); use base qw(centreon::plugins::templates::hardware);
@ -45,7 +45,7 @@ sub set_system {
], ],
}; };
$self->{components_path} = 'hardware::server::supermicro::snmp::mode::components'; $self->{components_path} = 'hardware::server::supermicro::superdoctor::snmp::mode::components';
$self->{components_module} = ['sensor', 'memory', 'disk', 'cpu']; $self->{components_module} = ['sensor', 'memory', 'disk', 'cpu'];
} }
@ -54,9 +54,8 @@ sub new {
my $self = $class->SUPER::new(package => __PACKAGE__, %options, no_absent => 1, no_load_components => 1); my $self = $class->SUPER::new(package => __PACKAGE__, %options, no_absent => 1, no_load_components => 1);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => $options{options}->add_options(arguments => {
{ });
});
return $self; return $self;
} }
@ -111,7 +110,7 @@ Example: --critical='sensor.temperature,.*,40'
=cut =cut
package hardware::server::supermicro::snmp::mode::components::sensor; package hardware::server::supermicro::superdoctor::snmp::mode::components::sensor;
use strict; use strict;
use warnings; use warnings;
@ -157,17 +156,27 @@ sub check {
next if ($self->check_filter(section => 'sensor', instance => $result->{smHealthMonitorType} . '.' . $instance)); next if ($self->check_filter(section => 'sensor', instance => $result->{smHealthMonitorType} . '.' . $instance));
$self->{components}->{sensor}->{total}++; $self->{components}->{sensor}->{total}++;
$self->{output}->output_add(long_msg => sprintf("sensor '%s' status is '%s' [instance = %s, value = %s]", $self->{output}->output_add(
$result->{smHealthMonitorName}, long_msg => sprintf(
defined($result->{smHealthMonitorStatus}) ? $result->{smHealthMonitorStatus} : 'undefined', "sensor '%s' status is '%s' [instance = %s, value = %s]",
$result->{smHealthMonitorType} . '.' . $instance, $result->{smHealthMonitorName},
defined($result->{smHealthMonitorReading}) ? $result->{smHealthMonitorReading} : '-')); defined($result->{smHealthMonitorStatus}) ? $result->{smHealthMonitorStatus} : 'undefined',
$result->{smHealthMonitorType} . '.' . $instance,
defined($result->{smHealthMonitorReading}) ? $result->{smHealthMonitorReading} : '-'
)
);
if (defined($result->{smHealthMonitorStatus})) { if (defined($result->{smHealthMonitorStatus})) {
my $exit = $self->get_severity(label => 'sensor', section => 'sensor.' . $result->{smHealthMonitorType}, value => $result->{smHealthMonitorStatus}); my $exit = $self->get_severity(label => 'sensor', section => 'sensor.' . $result->{smHealthMonitorType}, value => $result->{smHealthMonitorStatus});
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("Sensor '%s' status is '%s'", $result->{smHealthMonitorName}, $result->{smHealthMonitorStatus})); severity => $exit,
short_msg => sprintf(
"Sensor '%s' status is '%s'",
$result->{smHealthMonitorName},
$result->{smHealthMonitorStatus}
)
);
} }
} }
@ -177,9 +186,15 @@ sub check {
my $component = 'sensor.' . $result->{smHealthMonitorType}; my $component = 'sensor.' . $result->{smHealthMonitorType};
my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => $component, instance => $instance, value => $result->{smHealthMonitorReading}); my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => $component, instance => $instance, value => $result->{smHealthMonitorReading});
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("Sensor '%s' is %s %s", $result->{smHealthMonitorName}, $result->{smHealthMonitorReading}, severity => $exit2,
defined($result->{smHealthMonitorReadingUnit}) ? $result->{smHealthMonitorReadingUnit} : '')); short_msg => sprintf(
"Sensor '%s' is %s %s",
$result->{smHealthMonitorName},
$result->{smHealthMonitorReading},
defined($result->{smHealthMonitorReadingUnit}) ? $result->{smHealthMonitorReadingUnit} : ''
)
);
} }
# need some snmpwalk to do unit mapping!! experimental # need some snmpwalk to do unit mapping!! experimental
@ -196,7 +211,7 @@ sub check {
1; 1;
package hardware::server::supermicro::snmp::mode::components::memory; package hardware::server::supermicro::superdoctor::snmp::mode::components::memory;
use strict; use strict;
use warnings; use warnings;
@ -230,21 +245,32 @@ sub check {
next if ($self->check_filter(section => 'memory', instance => $instance)); next if ($self->check_filter(section => 'memory', instance => $instance));
$self->{components}->{memory}->{total}++; $self->{components}->{memory}->{total}++;
$self->{output}->output_add(long_msg => sprintf("memory '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{memTag}, long_msg => sprintf(
$result->{memDeviceStatus}, $instance)); "memory '%s' status is '%s' [instance = %s]",
$result->{memTag},
$result->{memDeviceStatus},
$instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'memory', value => $result->{memDeviceStatus}); my $exit = $self->get_severity(label => 'default', section => 'memory', value => $result->{memDeviceStatus});
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("Memory '%s' status is '%s'", $result->{memTag}, $result->{memDeviceStatus})); severity => $exit,
short_msg => sprintf(
"Memory '%s' status is '%s'",
$result->{memTag},
$result->{memDeviceStatus}
)
);
} }
} }
} }
1; 1;
package hardware::server::supermicro::snmp::mode::components::disk; package hardware::server::supermicro::superdoctor::snmp::mode::components::disk;
use strict; use strict;
use warnings; use warnings;
@ -278,21 +304,32 @@ sub check {
next if ($self->check_filter(section => 'disk', instance => $instance)); next if ($self->check_filter(section => 'disk', instance => $instance));
$self->{components}->{memory}->{total}++; $self->{components}->{memory}->{total}++;
$self->{output}->output_add(long_msg => sprintf("disk '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$result->{diskName}, long_msg => sprintf(
$result->{diskSmartStatus}, $instance)); "disk '%s' status is '%s' [instance = %s]",
$result->{diskName},
$result->{diskSmartStatus},
$instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'disk', value => $result->{diskSmartStatus}); my $exit = $self->get_severity(label => 'default', section => 'disk', value => $result->{diskSmartStatus});
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->{diskName}, $result->{diskSmartStatus})); severity => $exit,
short_msg => sprintf(
"Disk '%s' status is '%s'",
$result->{diskName},
$result->{diskSmartStatus}
)
);
} }
} }
} }
1; 1;
package hardware::server::supermicro::snmp::mode::components::cpu; package hardware::server::supermicro::superdoctor::snmp::mode::components::cpu;
use strict; use strict;
use warnings; use warnings;
@ -324,14 +361,25 @@ sub check {
next if ($self->check_filter(section => 'cpu', instance => $instance)); next if ($self->check_filter(section => 'cpu', instance => $instance));
$self->{components}->{cpu}->{total}++; $self->{components}->{cpu}->{total}++;
$self->{output}->output_add(long_msg => sprintf("cpu '%s' status is '%s' [instance = %s]", $self->{output}->output_add(
$instance, long_msg => sprintf(
$result->{cpuDeviceStatus}, $instance)); "cpu '%s' status is '%s' [instance = %s]",
$instance,
$result->{cpuDeviceStatus},
$instance
)
);
my $exit = $self->get_severity(label => 'default', section => 'cpu', value => $result->{cpuDeviceStatus}); my $exit = $self->get_severity(label => 'default', section => 'cpu', value => $result->{cpuDeviceStatus});
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("CPU '%s' status is '%s'", $instance, $result->{cpuDeviceStatus})); severity => $exit,
short_msg => sprintf(
"CPU '%s' status is '%s'",
$instance,
$result->{cpuDeviceStatus}
)
);
} }
} }
} }

View File

@ -18,7 +18,7 @@
# limitations under the License. # limitations under the License.
# #
package hardware::server::supermicro::snmp::plugin; package hardware::server::supermicro::superdoctor::snmp::plugin;
use strict; use strict;
use warnings; use warnings;
@ -31,7 +31,7 @@ sub new {
$self->{version} = '1.0'; $self->{version} = '1.0';
%{$self->{modes}} = ( %{$self->{modes}} = (
'hardware' => 'hardware::server::supermicro::snmp::mode::hardware', 'hardware' => 'hardware::server::supermicro::superdoctor::snmp::mode::hardware',
); );
return $self; return $self;