This commit is contained in:
garnier-quentin 2019-12-18 15:07:42 +01:00
parent 5d13fb53eb
commit 99a3283fd5
7 changed files with 126 additions and 44 deletions

View File

@ -28,14 +28,14 @@ use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold
sub custom_stack_status_output { sub custom_stack_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("Stack status is '%s'", $self->{result_values}->{stack_status}); my $msg = sprintf("Stack status is '%s'", $self->{result_values}->{stack_status});
return $msg; return $msg;
} }
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("State is '%s', Role is '%s'", $self->{result_values}->{state}, $self->{result_values}->{role}); my $msg = sprintf("State is '%s', Role is '%s'", $self->{result_values}->{state}, $self->{result_values}->{role});
return $msg; return $msg;
} }

View File

@ -1,3 +1,13 @@
2019-12-XX Quentin Garnier <qgarnier@centreon.com>
* Plugin added: CouchDB Rest API
* Plugin added: Maltem Insight Performance Rest API
* Plugin added: Hikvision camera SNMP
* Plugin added: Avaya CM SNMP
* Plugin added: Palo Alto SSH
* Mode added: [linux/snmp] 'udpcon'
* Mode added: [cisco/standard/snmp] 'load'
* Fix: Ctrl+F "Fix" on commits page
2019-10-16 Colin Gagnaire <cgagnaire@centreon.com> 2019-10-16 Colin Gagnaire <cgagnaire@centreon.com>
* Plugin added: ABB CMS700 SNMP * Plugin added: ABB CMS700 SNMP
* Mode added: [linux/local] 'discovery-nmap' * Mode added: [linux/local] 'discovery-nmap'

View File

@ -37,14 +37,18 @@ my $oid_extremeFanStatusEntry = '.1.3.6.1.4.1.1916.1.1.1.9.1';
sub load { sub load {
my ($self) = @_; my ($self) = @_;
push @{$self->{request}}, { oid => $oid_extremeFanStatusEntry, end => $mapping->{extremeFanOperational}->{oid} }; push @{$self->{request}}, {
oid => $oid_extremeFanStatusEntry,
start => $mapping->{extremeFanOperational}->{oid},
end => $mapping->{extremeFanSpeed}->{oid}
};
} }
sub check { sub check {
my ($self) = @_; my ($self) = @_;
$self->{output}->output_add(long_msg => "Checking fans"); $self->{output}->output_add(long_msg => "Checking fans");
$self->{components}->{fan} = {name => 'fans', total => 0, skip => 0}; $self->{components}->{fan} = { name => 'fans', total => 0, skip => 0 };
return if ($self->check_filter(section => 'fan')); return if ($self->check_filter(section => 'fan'));
my ($exit, $warn, $crit, $checked); my ($exit, $warn, $crit, $checked);
@ -56,19 +60,37 @@ sub check {
next if ($self->check_filter(section => 'fan', instance => $instance)); next if ($self->check_filter(section => 'fan', instance => $instance));
$self->{components}->{fan}->{total}++; $self->{components}->{fan}->{total}++;
$self->{output}->output_add(long_msg => sprintf("Fan '%s' status is '%s' [instance = %s, speed = %s]", $self->{output}->output_add(long_msg =>
$instance, $result->{extremeFanOperational}, $instance, defined($result->{extremeFanSpeed}) ? $result->{extremeFanSpeed} : 'unknown')); sprintf(
"Fan '%s' status is '%s' [instance = %s, speed = %s]",
$instance,
$result->{extremeFanOperational},
$instance,
defined($result->{extremeFanSpeed}) ? $result->{extremeFanSpeed} : 'unknown'
)
);
$exit = $self->get_severity(section => 'fan', value => $result->{extremeFanOperational}); $exit = $self->get_severity(section => 'fan', value => $result->{extremeFanOperational});
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("Fan '%s' status is '%s'", $instance, $result->{extremeFanOperational})); severity => $exit,
next; short_msg => sprintf(
"Fan '%s' status is '%s'",
$instance,
$result->{extremeFanOperational}
)
);
} }
($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'fan', instance => $instance, value => $result->{extremeFanSpeed}); ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'fan', instance => $instance, value => $result->{extremeFanSpeed});
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("Fan '%s' is '%s' rpm", $instance, $result->{extremeFanSpeed})); severity => $exit,
short_msg => sprintf(
"Fan '%s' is '%s' rpm",
$instance,
$result->{extremeFanSpeed}
)
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'fan', unit => 'rpm', label => 'fan', unit => 'rpm',
@ -76,7 +98,8 @@ sub check {
instances => $instance, instances => $instance,
value => $result->{extremeFanSpeed}, value => $result->{extremeFanSpeed},
warning => $warn, warning => $warn,
critical => $crit, min => 0 critical => $crit,
min => 0
); );
} }
} }

View File

@ -54,7 +54,7 @@ sub check {
my ($self) = @_; my ($self) = @_;
$self->{output}->output_add(long_msg => "Checking poes"); $self->{output}->output_add(long_msg => "Checking poes");
$self->{components}->{poe} = {name => 'poes', total => 0, skip => 0}; $self->{components}->{poe} = { name => 'poes', total => 0, skip => 0 };
return if ($self->check_filter(section => 'poe')); return if ($self->check_filter(section => 'poe'));
my ($exit, $warn, $crit, $checked); my ($exit, $warn, $crit, $checked);
@ -70,22 +70,39 @@ sub check {
sprintf("%.3f", $result2->{extremePethSlotMeasuredPower} / 1000) : 'unknown'; sprintf("%.3f", $result2->{extremePethSlotMeasuredPower} / 1000) : 'unknown';
$self->{components}->{poe}->{total}++; $self->{components}->{poe}->{total}++;
$self->{output}->output_add(long_msg => sprintf("Poe '%s' status is '%s' [instance = %s, power = %s]", $self->{output}->output_add(
$instance, $result->{extremePethSlotPoeStatus}, long_msg => sprintf(
$instance, $result2->{extremePethSlotMeasuredPower})); "Poe '%s' status is '%s' [instance = %s, power = %s]",
$instance,
$result->{extremePethSlotPoeStatus},
$instance,
$result2->{extremePethSlotMeasuredPower}
)
);
$exit = $self->get_severity(section => 'poe', value => $result->{extremePethSlotPoeStatus}); $exit = $self->get_severity(section => 'poe', value => $result->{extremePethSlotPoeStatus});
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("Poe '%s' status is '%s'", $instance, $result->{extremePethSlotPoeStatus})); severity => $exit,
next; short_msg => sprintf(
"Poe '%s' status is '%s'",
$instance,
$result->{extremePethSlotPoeStatus}
)
);
} }
next if ($result2->{extremePethSlotMeasuredPower} !~ /\d+/); next if ($result2->{extremePethSlotMeasuredPower} !~ /\d+/);
($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'poe', instance => $instance, value => $result2->{extremePethSlotMeasuredPower}); ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'poe', instance => $instance, value => $result2->{extremePethSlotMeasuredPower});
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("Poe '%s' is '%s' W", $instance, $result2->{extremePethSlotMeasuredPower})); severity => $exit,
short_msg => sprintf(
"Poe '%s' is '%s' W",
$instance,
$result2->{extremePethSlotMeasuredPower}
)
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => 'poe_power', unit => 'W', label => 'poe_power', unit => 'W',
@ -93,7 +110,8 @@ sub check {
instances => $instance, instances => $instance,
value => $result2->{extremePethSlotMeasuredPower}, value => $result2->{extremePethSlotMeasuredPower},
warning => $warn, warning => $warn,
critical => $crit, min => 0 critical => $crit,
min => 0
); );
} }
} }

View File

@ -54,14 +54,22 @@ sub check_fan_speed {
my ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'psu.fan', instance => $options{instance}, value => $options{value}); my ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'psu.fan', instance => $options{instance}, value => $options{value});
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("Power supply fan '%s' is '%s' rpm", $options{instance}, $options{value})); severity => $exit,
short_msg => sprintf(
"Power supply fan '%s' is '%s' rpm",
$options{instance},
$options{value}
)
);
} }
$self->{output}->perfdata_add(label => 'psu_fan_' . $options{instance}, unit => 'rpm', $self->{output}->perfdata_add(
value => $options{value}, label => 'psu_fan_' . $options{instance}, unit => 'rpm',
warning => $warn, value => $options{value},
critical => $crit, min => 0 warning => $warn,
); critical => $crit,
min => 0
);
} }
sub check { sub check {
@ -109,7 +117,8 @@ sub check {
instances => $instance, instances => $instance,
value => $power, value => $power,
warning => $warn, warning => $warn,
critical => $crit, min => 0 critical => $crit,
min => 0
); );
} }
} }

View File

@ -57,7 +57,7 @@ sub check {
my ($self) = @_; my ($self) = @_;
$self->{output}->output_add(long_msg => "Checking slots"); $self->{output}->output_add(long_msg => "Checking slots");
$self->{components}->{slot} = {name => 'slots', total => 0, skip => 0}; $self->{components}->{slot} = { name => 'slots', total => 0, skip => 0 };
return if ($self->check_filter(section => 'slot')); return if ($self->check_filter(section => 'slot'));
foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_extremeSlotEntry}})) { foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_extremeSlotEntry}})) {
@ -72,14 +72,26 @@ sub check {
} }
$self->{components}->{slot}->{total}++; $self->{components}->{slot}->{total}++;
$self->{output}->output_add(long_msg => sprintf("Slot '%s' status is '%s' [instance = %s]", $self->{output}->output_add(long_msg =>
$result->{extremeSlotName}, $result->{extremeSlotModuleState}, $instance)); sprintf(
"Slot '%s' status is '%s' [instance = %s]",
$result->{extremeSlotName},
$result->{extremeSlotModuleState},
$instance
)
);
my $exit = $self->get_severity(section => 'slot', value => $result->{extremeSlotModuleState}); my $exit = $self->get_severity(section => 'slot', value => $result->{extremeSlotModuleState});
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("Slot '%s' status is '%s'", $result->{extremeSlotName}, $result->{extremeSlotModuleState})); severity => $exit,
short_msg => sprintf(
"Slot '%s' status is '%s'",
$result->{extremeSlotName},
$result->{extremeSlotModuleState}
)
);
} }
} }
} }
1; 1;

View File

@ -36,8 +36,8 @@ sub load {
sub check { sub check {
my ($self) = @_; my ($self) = @_;
$self->{output}->output_add(long_msg => "Checking temperatures"); $self->{output}->output_add(long_msg => 'Checking temperatures');
$self->{components}->{temperature} = {name => 'temperatures', total => 0, skip => 0}; $self->{components}->{temperature} = { name => 'temperatures', total => 0, skip => 0 };
return if ($self->check_filter(section => 'temperature')); return if ($self->check_filter(section => 'temperature'));
return if (!defined($self->{results}->{$mapping->{extremeCurrentTemperature}->{oid}}->{$mapping->{extremeCurrentTemperature}->{oid} . '.0'})); return if (!defined($self->{results}->{$mapping->{extremeCurrentTemperature}->{oid}}->{$mapping->{extremeCurrentTemperature}->{oid} . '.0'}));
@ -47,16 +47,26 @@ sub check {
next if ($self->check_filter(section => 'temperature', instance => $instance)); next if ($self->check_filter(section => 'temperature', instance => $instance));
$self->{components}->{temperature}->{total}++; $self->{components}->{temperature}->{total}++;
$self->{output}->output_add(long_msg => sprintf("temperature is %dC [instance: %s].", $self->{output}->output_add(
$result->{extremeCurrentTemperature}, long_msg => sprintf(
$instance)); 'temperature is %dC [instance: %s].',
$result->{extremeCurrentTemperature},
$instance
)
);
my ($exit, $warn, $crit) = $self->get_severity_numeric(section => 'temperature', instance => $instance, value => $result->{extremeCurrentTemperature}); my ($exit, $warn, $crit) = $self->get_severity_numeric(section => 'temperature', instance => $instance, value => $result->{extremeCurrentTemperature});
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("Temperature is %s degree centigrade", $result->{extremeCurrentTemperature})); severity => $exit,
short_msg => sprintf(
'Temperature is %s degree centigrade',
$result->{extremeCurrentTemperature}
)
);
} }
$self->{output}->perfdata_add( $self->{output}->perfdata_add(
label => "temp", unit => 'C', label => 'temp', unit => 'C',
nlabel => 'hardware.temperature.celsius', nlabel => 'hardware.temperature.celsius',
value => $result->{extremeCurrentTemperature}, value => $result->{extremeCurrentTemperature},
warning => $warn, warning => $warn,