From 3331ffe9b8feb8704a24a6527c5718b6b6f06329 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Thu, 17 Sep 2020 15:51:27 +0200 Subject: [PATCH] Fix #2217 --- .../standard/rfc1628/snmp/mode/outputlines.pm | 65 +++++++++++-------- .../ups/standard/rfc1628/snmp/plugin.pm | 14 ++-- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/centreon-plugins/hardware/ups/standard/rfc1628/snmp/mode/outputlines.pm b/centreon-plugins/hardware/ups/standard/rfc1628/snmp/mode/outputlines.pm index b56ade5fb..c28d5af02 100644 --- a/centreon-plugins/hardware/ups/standard/rfc1628/snmp/mode/outputlines.pm +++ b/centreon-plugins/hardware/ups/standard/rfc1628/snmp/mode/outputlines.pm @@ -30,57 +30,53 @@ sub set_counters { $self->{maps_counters_type} = [ { name => 'global', type => 0, skipped_code => { -10 => 1 } }, - { name => 'oline', type => 1, cb_prefix_output => 'prefix_oline_output', message_multiple => 'All output lines are ok', skipped_code => { -10 => 1 } }, + { name => 'oline', type => 1, cb_prefix_output => 'prefix_oline_output', message_multiple => 'All output lines are ok', skipped_code => { -10 => 1 } } ]; $self->{maps_counters}->{global} = [ { label => 'stdev-3phases', nlabel => 'output.3phases.stdev.gauge', set => { key_values => [ { name => 'stdev' } ], - output_template => 'Load Standard Deviation : %.2f', + output_template => 'Load standard deviation: %.2f', perfdatas => [ - { label => 'stdev', value => 'stdev', template => '%.2f' }, - ], + { label => 'stdev', template => '%.2f' } + ] } - }, + } ]; $self->{maps_counters}->{oline} = [ { label => 'load', nlabel => 'line.output.load.percentage', set => { key_values => [ { name => 'upsOutputPercentLoad' } ], - output_template => 'Load : %.2f %%', + output_template => 'load: %.2f %%', perfdatas => [ - { value => 'upsOutputPercentLoad', template => '%.2f', - min => 0, max => 100, unit => '%', label_extra_instance => 1 }, - ], + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] } }, { label => 'current', nlabel => 'line.output.current.ampere', set => { key_values => [ { name => 'upsOutputCurrent' } ], - output_template => 'Current : %.2f A', + output_template => 'current: %.2f A', perfdatas => [ - { value => 'upsOutputCurrent', template => '%.2f', - min => 0, unit => 'A', label_extra_instance => 1 }, - ], + { template => '%.2f', min => 0, unit => 'A', label_extra_instance => 1 } + ] } }, { label => 'voltage', nlabel => 'line.output.voltage.volt', set => { key_values => [ { name => 'upsOutputVoltage' } ], - output_template => 'Voltage : %.2f V', + output_template => 'voltage: %.2f V', perfdatas => [ - { value => 'upsOutputVoltage', template => '%.2f', - unit => 'V', label_extra_instance => 1 }, - ], + { template => '%.2f', unit => 'V', label_extra_instance => 1 } + ] } }, { label => 'power', nlabel => 'line.output.power.watt', set => { key_values => [ { name => 'upsOutputPower' } ], - output_template => 'Power : %.2f W', + output_template => 'power: %.2f W', perfdatas => [ - { value => 'upsOutputPower', template => '%.2f', - unit => 'W', label_extra_instance => 1 }, - ], + { template => '%.2f', unit => 'W', label_extra_instance => 1 } + ] } - }, + } ]; } @@ -90,6 +86,7 @@ sub new { bless $self, $class; $options{options}->add_options(arguments => { + 'ignore-zero-counters' => { name => 'ignore_zero_counters' } }); return $self; @@ -98,7 +95,7 @@ sub new { sub prefix_oline_output { my ($self, %options) = @_; - return "Output Line '" . $options{instance_value}->{display} . "' "; + return "Output line '" . $options{instance_value}->{display} . "' "; } sub stdev { @@ -126,7 +123,7 @@ my $mapping = { upsOutputVoltage => { oid => '.1.3.6.1.2.1.33.1.4.4.1.2' }, # in Volt upsOutputCurrent => { oid => '.1.3.6.1.2.1.33.1.4.4.1.3' }, # in dA upsOutputPower => { oid => '.1.3.6.1.2.1.33.1.4.4.1.4' }, # in Watt - upsOutputPercentLoad => { oid => '.1.3.6.1.2.1.33.1.4.4.1.5' }, + upsOutputPercentLoad => { oid => '.1.3.6.1.2.1.33.1.4.4.1.5' } }; my $oid_upsOutputEntry = '.1.3.6.1.2.1.33.1.4.4.1'; @@ -138,16 +135,24 @@ sub manage_selection { oid => $oid_upsOutputEntry, nothing_quit => 1 ); - foreach my $oid (keys %{$snmp_result}) { + foreach my $oid (keys %$snmp_result) { $oid =~ /^$oid_upsOutputEntry\.\d+\.(.*)$/; my $instance = $1; next if (defined($self->{oline}->{$instance})); - + my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $instance); + if (defined($self->{option_results}->{ignore_zero_counters})) { + foreach (keys %$result) { + delete $result->{$_} if ($result->{$_} == 0); + } + } $result->{upsOutputCurrent} *= 0.1 if (defined($result->{upsOutputCurrent})); - $self->{oline}->{$instance} = { display => $instance, %$result }; + + if (scalar(keys %$result) > 0) { + $self->{oline}->{$instance} = { display => $instance, %$result }; + } } - + if (scalar(keys %{$self->{oline}}) > 1) { $self->stdev(); } @@ -163,6 +168,10 @@ Check Output lines metrics (load, voltage, current and true power). =over 8 +=item B<--ignore-zero-counters> + +Ignore counters equals to 0. + =item B<--warning-*> Threshold warning. diff --git a/centreon-plugins/hardware/ups/standard/rfc1628/snmp/plugin.pm b/centreon-plugins/hardware/ups/standard/rfc1628/snmp/plugin.pm index c7744a00b..b1b70e3de 100644 --- a/centreon-plugins/hardware/ups/standard/rfc1628/snmp/plugin.pm +++ b/centreon-plugins/hardware/ups/standard/rfc1628/snmp/plugin.pm @@ -30,13 +30,13 @@ sub new { bless $self, $class; $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'alarms' => 'hardware::ups::standard::rfc1628::snmp::mode::alarms', - 'battery-status' => 'hardware::ups::standard::rfc1628::snmp::mode::batterystatus', - 'input-lines' => 'hardware::ups::standard::rfc1628::snmp::mode::inputlines', - 'output-lines' => 'hardware::ups::standard::rfc1628::snmp::mode::outputlines', - 'output-source' => 'hardware::ups::standard::rfc1628::snmp::mode::outputsource', - ); + $self->{modes} = { + 'alarms' => 'hardware::ups::standard::rfc1628::snmp::mode::alarms', + 'battery-status' => 'hardware::ups::standard::rfc1628::snmp::mode::batterystatus', + 'input-lines' => 'hardware::ups::standard::rfc1628::snmp::mode::inputlines', + 'output-lines' => 'hardware::ups::standard::rfc1628::snmp::mode::outputlines', + 'output-source' => 'hardware::ups::standard::rfc1628::snmp::mode::outputsource' + }; return $self; }