From 50317c1c3100e5b8a53c6d1c45731c99ae24b703 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Wed, 9 Jan 2019 15:58:47 +0100 Subject: [PATCH] enhance netgear readynas plugin --- .../readynas/snmp/mode/components/disk.pm | 35 ++++---- .../readynas/snmp/mode/components/fan.pm | 77 ++++++++-------- .../readynas/snmp/mode/components/psu.pm | 12 +-- .../snmp/mode/components/temperature.pm | 89 ++++++------------- .../readynas/snmp/mode/components/volume.pm | 10 +-- .../netgear/readynas/snmp/mode/hardware.pm | 60 ++++++------- 6 files changed, 126 insertions(+), 157 deletions(-) diff --git a/storage/netgear/readynas/snmp/mode/components/disk.pm b/storage/netgear/readynas/snmp/mode/components/disk.pm index d0f540119..7e5bbc334 100644 --- a/storage/netgear/readynas/snmp/mode/components/disk.pm +++ b/storage/netgear/readynas/snmp/mode/components/disk.pm @@ -28,30 +28,30 @@ use warnings; my ($mapping, $oid_diskTable); my $mapping_v6 = { - diskState => { oid => '.1.3.6.1.4.1.4526.22.3.1.9' }, - diskTemperature => { oid => '.1.3.6.1.4.1.4526.22.3.1.10' }, + diskState => { oid => '.1.3.6.1.4.1.4526.22.3.1.9' }, + diskTemperature => { oid => '.1.3.6.1.4.1.4526.22.3.1.10' }, }; my $oid_diskTable_v6 = '.1.3.6.1.4.1.4526.22.3'; my $mapping_v4 = { - diskState => { oid => '.1.3.6.1.4.1.4526.18.3.1.4' }, - diskTemperature => { oid => '.1.3.6.1.4.1.4526.18.3.1.5' }, + diskState => { oid => '.1.3.6.1.4.1.4526.18.3.1.4' }, + diskTemperature => { oid => '.1.3.6.1.4.1.4526.18.3.1.5' }, }; my $oid_diskTable_v4 = '.1.3.6.1.4.1.4526.18.3'; sub load { my ($self) = @_; - $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; - $oid_diskTable = $self->{mib_ver} == 4 ? $oid_diskTable_v4 : $oid_diskTable_v6; - + $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; + $oid_diskTable = $self->{mib_ver} == 4 ? $oid_diskTable_v4 : $oid_diskTable_v6; + push @{$self->{request}}, { oid => $oid_diskTable }; } sub check { my ($self) = @_; - $self->{output}->output_add(long_msg => "Checking disk"); + $self->{output}->output_add(long_msg => "checking disks"); $self->{components}->{disk} = {name => 'disk', total => 0, skip => 0}; return if ($self->check_filter(section => 'disk')); @@ -63,20 +63,19 @@ sub check { next if ($self->check_filter(section => 'disk', instance => $instance)); $self->{components}->{disk}->{total}++; - my $temperature_string = defined($result->{diskTemperature}) && $result->{diskTemperature} != -1 ? " (temperature $result->{diskTemperature}" : ''; - my $temperature_unit = $temperature_string ne '' && $self->{mib_ver} == 6 ? 'C)' : ''; - $temperature_unit = $temperature_string ne '' && $self->{mib_ver} == 4 ? 'F)' : ''; - - $self->{output}->output_add(long_msg => sprintf("disk '%s'%s%s status is %s.", - $instance, $temperature_string, $temperature_unit, $result->{diskState})); - + my $temperature_string = defined($result->{diskTemperature}) && $result->{diskTemperature} != -1 ? " (temperature $result->{diskTemperature}" : ''; + my $temperature_unit = $temperature_string ne '' && $self->{mib_ver} == 6 ? 'C)' : ''; + $temperature_unit = $temperature_string ne '' && $self->{mib_ver} == 4 ? 'F)' : ''; + + $self->{output}->output_add(long_msg => sprintf("disk '%s' status is %s [temperature: %s%s]", + $instance, $result->{diskState}, $temperature_string, $temperature_unit)); + my $exit = $self->get_severity(section => 'disk', value => $result->{diskState}); - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add(severity => $exit, - short_msg => sprintf("Disk '%s'%s%s status is %s", $instance, $temperature_string, $temperature_unit, $result->{diskState})); + short_msg => sprintf("Disk '%s' status is %s", $instance, $result->{diskState})); } } } -1; \ No newline at end of file +1; diff --git a/storage/netgear/readynas/snmp/mode/components/fan.pm b/storage/netgear/readynas/snmp/mode/components/fan.pm index e0e65c3f3..eef777243 100644 --- a/storage/netgear/readynas/snmp/mode/components/fan.pm +++ b/storage/netgear/readynas/snmp/mode/components/fan.pm @@ -33,60 +33,65 @@ my $mapping_v6 = { my $oid_fanTable_v6 = '.1.3.6.1.4.1.4526.22.4'; my $mapping_v4 = { - fanRPM => { oid => '.1.3.6.1.4.1.4526.18.4.1.2' }, + fanRPM => { oid => '.1.3.6.1.4.1.4526.18.4.1.2' }, }; my $oid_fanTable_v4 = '.1.3.6.1.4.1.4526.18.4'; sub load { my ($self) = @_; - $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; - $oid_fanTable = $self->{mib_ver} == 4 ? $oid_fanTable_v4 : $oid_fanTable_v6; - + $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; + $oid_fanTable = $self->{mib_ver} == 4 ? $oid_fanTable_v4 : $oid_fanTable_v6; + push @{$self->{request}}, { oid => $oid_fanTable }; } sub check { my ($self) = @_; - $self->{output}->output_add(long_msg => "Checking fan"); + $self->{output}->output_add(long_msg => "checking fan"); $self->{components}->{fan} = {name => 'fan', total => 0, skip => 0}; return if ($self->check_filter(section => 'fan')); - if ($self->{mib_ver} == 6){ - foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_fanTable}})) { - next if ($oid !~ /^$mapping->{fanStatus}->{oid}\.(\d+)/); - my $instance = $1; - my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_fanTable}, instance => $instance); + if ($self->{mib_ver} == 6) { + foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_fanTable}})) { + next if ($oid !~ /^$mapping->{fanStatus}->{oid}\.(\d+)/); + my $instance = $1; + my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_fanTable}, instance => $instance); - next if ($self->check_filter(section => 'fan', instance => $instance)); - $self->{components}->{fan}->{total}++; + next if ($self->check_filter(section => 'fan', instance => $instance)); + $self->{components}->{fan}->{total}++; - $self->{output}->output_add(long_msg => sprintf("fan '%s' status is %s.", $instance, $result->{fanStatus})); - my $exit = $self->get_severity(label => 'default', section => 'fan', value => $result->{fanStatus}); - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("fan '%s' status is %s", $instance, $result->{fanStatus})); - } - } - }elsif ($self->{mib_ver} == 4){ - foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_fanTable}})) { - next if ($oid !~ /^$mapping->{fanRPM}->{oid}\.(\d+)/); - my $instance = $1; - my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_fanTable}, instance => $instance); + $self->{output}->output_add(long_msg => sprintf("fan '%s' status is %s.", $instance, $result->{fanStatus})); + my $exit = $self->get_severity(label => 'default', section => 'fan', value => $result->{fanStatus}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add(severity => $exit, + short_msg => sprintf("fan '%s' status is %s", $instance, $result->{fanStatus})); + } + } + return ; + } + + foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_fanTable}})) { + next if ($oid !~ /^$mapping->{fanRPM}->{oid}\.(\d+)/); + my $instance = $1; + my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_fanTable}, instance => $instance); - next if ($self->check_filter(section => 'fan', instance => $instance)); - $self->{components}->{fan}->{total}++; - - $self->{output}->output_add(long_msg => sprintf("fan '%s' rpm is %s.", $instance, $result->{fanRPM})); - my ($exit) = $self->get_severity_numeric(section => 'fan', instance => $instance, value => $result->{fanRPM}); - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("fan '%s' rpm is %s", $instance, $result->{fanRPM})); - } - $self->{output}->perfdata_add(label => "fan_" . $instance, unit => 'RPM', value => $result->{fanRPM}); - } + next if ($self->check_filter(section => 'fan', instance => $instance)); + $self->{components}->{fan}->{total}++; + + $self->{output}->output_add(long_msg => sprintf("fan '%s' rpm is %s.", $instance, $result->{fanRPM})); + my ($exit, $warn, $crit) = $self->get_severity_numeric(section => 'fan', instance => $instance, value => $result->{fanRPM}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add(severity => $exit, + short_msg => sprintf("fan '%s' rpm is %s", $instance, $result->{fanRPM})); + } + + $self->{output}->perfdata_add(label => "fan_" . $instance, unit => 'rpm', + value => $result->{fanRPM}, + warning => $warn, + critical => $crit); } } -1; \ No newline at end of file +1; diff --git a/storage/netgear/readynas/snmp/mode/components/psu.pm b/storage/netgear/readynas/snmp/mode/components/psu.pm index e6da572a3..85d25dfa8 100644 --- a/storage/netgear/readynas/snmp/mode/components/psu.pm +++ b/storage/netgear/readynas/snmp/mode/components/psu.pm @@ -40,16 +40,16 @@ my $oid_psuTable_v4 = '.1.3.6.1.4.1.4526.18.8'; sub load { my ($self) = @_; - $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; - $oid_psuTable = $self->{mib_ver} == 4 ? $oid_psuTable_v4 : $oid_psuTable_v6; - + $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; + $oid_psuTable = $self->{mib_ver} == 4 ? $oid_psuTable_v4 : $oid_psuTable_v6; + push @{$self->{request}}, { oid => $oid_psuTable }; } sub check { my ($self) = @_; - $self->{output}->output_add(long_msg => "Checking power supply"); + $self->{output}->output_add(long_msg => "checking power supply"); $self->{components}->{psu} = {name => 'psu', total => 0, skip => 0}; return if ($self->check_filter(section => 'psu')); @@ -63,7 +63,7 @@ sub check { $self->{output}->output_add(long_msg => sprintf("power supply '%s' status is %s.", $instance, $result->{psuStatus})); - my $exit = $self->get_severity(section => 'psu', value => $result->{psuStatus}); + my $exit = $self->get_severity(section => 'psu', value => $result->{psuStatus}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add(severity => $exit, short_msg => sprintf("Power Supply '%s' status is %s.", $instance, $result->{psuStatus})); @@ -71,4 +71,4 @@ sub check { } } -1; \ No newline at end of file +1; diff --git a/storage/netgear/readynas/snmp/mode/components/temperature.pm b/storage/netgear/readynas/snmp/mode/components/temperature.pm index 2ec7e8a5e..994ff39e8 100644 --- a/storage/netgear/readynas/snmp/mode/components/temperature.pm +++ b/storage/netgear/readynas/snmp/mode/components/temperature.pm @@ -29,94 +29,63 @@ my ($mapping, $oid_temperatureTable); my $mapping_v6 = { temperatureValue => { oid => '.1.3.6.1.4.1.4526.22.5.1.2' }, - temperatureType => { oid => '.1.3.6.1.4.1.4526.22.5.1.3' }, + temperatureType => { oid => '.1.3.6.1.4.1.4526.22.5.1.3' }, temperatureMax => { oid => '.1.3.6.1.4.1.4526.22.5.1.5' }, }; my $oid_temperatureTable_v6 = '.1.3.6.1.4.1.4526.22.5'; my $mapping_v4 = { temperatureValue => { oid => '.1.3.6.1.4.1.4526.18.5.1.2' }, - temperatureStatus => { oid => '.1.3.6.1.4.1.4526.18.5.1.3' }, + temperatureStatus => { oid => '.1.3.6.1.4.1.4526.18.5.1.3' }, }; my $oid_temperatureTable_v4 = '.1.3.6.1.4.1.4526.18.5'; sub load { my ($self) = @_; - $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; - $oid_temperatureTable = $self->{mib_ver} == 4 ? $oid_temperatureTable_v4 : $oid_temperatureTable_v6; - + $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; + $oid_temperatureTable = $self->{mib_ver} == 4 ? $oid_temperatureTable_v4 : $oid_temperatureTable_v6; + push @{$self->{request}}, { oid => $oid_temperatureTable }; } sub check { my ($self) = @_; - $self->{output}->output_add(long_msg => "Checking temperatures"); - $self->{components}->{temperature} = {name => 'temperatures', total => 0, skip => 0}; + $self->{output}->output_add(long_msg => "checking temperatures"); + $self->{components}->{temperature} = { name => 'temperatures', total => 0, skip => 0 }; return if ($self->check_filter(section => 'temperature')); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$oid_temperatureTable}})) { next if ($oid !~ /^$mapping->{temperatureValue}->{oid}\.(.*)$/); my $instance = $1; my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_temperatureTable}, instance => $instance); + $instance .= "_" . $result->{temperatureType} if (defined($result->{temperatureType})); next if ($self->check_filter(section => 'temperature', instance => $instance)); $self->{components}->{temperature}->{total}++; - - my $temperatureMax_string = defined($result->{temperatureMax}) && $result->{temperatureMax} != -1 ? " ($result->{temperatureMax} max)" : ''; - my $temperatureMax_unit = defined($result->{temperatureMax}) && $self->{mib_ver} == 6 ? 'C' : 'F'; - - if ($self->{mib_ver} == 6){ - $self->{output}->output_add(long_msg => sprintf("'%s' %s temperature is %d%s%s.", - $instance, $result->{temperatureType}, $result->{temperatureValue}, - $temperatureMax_unit, $temperatureMax_string)); - if (defined($result->{temperatureValue}) && $result->{temperatureValue} != -1) { - my ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'temperature', instance => $instance, value => $result->{temperatureValue}); - if ($checked == 0) { - my $crit_th = $result->{temperatureMax} != -1 ? $result->{temperatureMax} : ''; - my $warn_th = $crit_th ne '' ? $crit_th-10 : ''; - $self->{perfdata}->threshold_validate(label => 'warning-temperature-instance-' . $instance, value => $warn_th); - $self->{perfdata}->threshold_validate(label => 'critical-temperature-instance-' . $instance, value => $crit_th); - $warn = $self->{perfdata}->get_perfdata_for_output(label => 'warning-temperature-instance-' . $instance); - $crit = $self->{perfdata}->get_perfdata_for_output(label => 'critical-temperature-instance-' . $instance); - } - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("Temperature '%s' %s is %s degree %s", - $instance, $result->{temperatureType}, $result->{temperatureValue}, $temperatureMax_unit)); - } - $self->{output}->perfdata_add(label => "temp_" . $instance . "_" . $result->{temperatureType}, unit => $temperatureMax_unit, - value => $result->{temperatureValue}, - warning => $warn, - critical => $crit); - } - }elsif ($self->{mib_ver} == 4){ - $self->{output}->output_add(long_msg => sprintf("temperature '%s' (%dF) is %s.", - $instance, $result->{temperatureValue}, $result->{temperatureStatus})); - - # check for warnings or criticals ? - my ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'temperature', instance => $instance, value => $result->{temperatureValue}); - if ($checked == 1) { - $self->{perfdata}->threshold_validate(label => 'warning-temperature-instance-' . $instance, value => $warn); - $self->{perfdata}->threshold_validate(label => 'critical-temperature-instance-' . $instance, value => $crit); - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("Temperature '%s' (%s%s) is %s.", $instance, $result->{temperatureValue}, $temperatureMax_unit, $exit)); - } - }else{ - - my $exit = $self->get_severity(label => 'default', section => 'temperature', value => $result->{temperatureStatus}); - if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("Temperature '%s' (%s%s) is %s.", $instance, $result->{temperatureValue}, $temperatureMax_unit, $result->{temperatureStatus})); - } - } - $self->{output}->perfdata_add(label => "temp_" . $instance, unit => $temperatureMax_unit, - value => $result->{temperatureValue}); - } + my $temperatureMax_string = defined($result->{temperatureMax}) && $result->{temperatureMax} != -1 ? " ($result->{temperatureMax} max)" : ''; + my $temperatureMax_unit = defined($result->{temperatureMax}) && $self->{mib_ver} == 6 ? 'C' : 'F'; + + $self->{output}->output_add(long_msg => sprintf("temperature '%s' status is %s [value = %s%s]", + $instance, $result->{temperatureStatus}, $result->{temperatureValue}, $temperatureMax_unit)); + my $exit = $self->get_severity(label => 'default', section => 'temperature', value => $result->{temperatureStatus}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add(severity => $exit, + short_msg => sprintf("Temperature '%s' status is %s.", $instance, $result->{temperatureStatus})); + } + + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => 'temperature', instance => $instance, value => $result->{temperatureValue}); + if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { + $self->{output}->output_add(severity => $exit2, + short_msg => sprintf("Temperature '%s' is %s%s", $instance, $result->{temperatureValue}, $temperatureMax_unit)); + } + $self->{output}->perfdata_add(label => "temp_" . $instance, unit => $temperatureMax_unit, + value => $result->{temperatureValue}, + warning => $warn, + critical => $crit); } } -1; \ No newline at end of file +1; diff --git a/storage/netgear/readynas/snmp/mode/components/volume.pm b/storage/netgear/readynas/snmp/mode/components/volume.pm index e58ca9559..049a18c2c 100644 --- a/storage/netgear/readynas/snmp/mode/components/volume.pm +++ b/storage/netgear/readynas/snmp/mode/components/volume.pm @@ -42,16 +42,16 @@ my $oid_volumeTable_v4 = '.1.3.6.1.4.1.4526.18.7'; sub load { my ($self) = @_; - $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; - $oid_volumeTable = $self->{mib_ver} == 4 ? $oid_volumeTable_v4 : $oid_volumeTable_v6; - + $mapping = $self->{mib_ver} == 4 ? $mapping_v4 : $mapping_v6; + $oid_volumeTable = $self->{mib_ver} == 4 ? $oid_volumeTable_v4 : $oid_volumeTable_v6; + push @{$self->{request}}, { oid => $oid_volumeTable }; } sub check { my ($self) = @_; - $self->{output}->output_add(long_msg => "Checking volume"); + $self->{output}->output_add(long_msg => "checking volume"); $self->{components}->{volume} = {name => 'volume', total => 0, skip => 0}; return if ($self->check_filter(section => 'volume')); @@ -74,4 +74,4 @@ sub check { } } -1; \ No newline at end of file +1; diff --git a/storage/netgear/readynas/snmp/mode/hardware.pm b/storage/netgear/readynas/snmp/mode/hardware.pm index 85012f4e1..27df2a84b 100644 --- a/storage/netgear/readynas/snmp/mode/hardware.pm +++ b/storage/netgear/readynas/snmp/mode/hardware.pm @@ -32,40 +32,39 @@ sub set_system { $self->{regexp_threshold_overload_check_section_option} = '^(fan|psu|disk|volume|temperature)$'; $self->{regexp_threshold_numeric_check_section_option} = '^(fan|temperature)$'; - - $self->{cb_hook1} = 'init_mib_ver'; + + $self->{cb_hook1} = 'init_mib_ver'; $self->{cb_hook2} = 'snmp_execute'; $self->{thresholds} = { - # fan, temperature (v4) default => [ ['Normal', 'OK'], ['Ok', 'OK'], - ['Unknown', 'CRITICAL'], - ['Failed', 'CRITICAL'], + ['Unknown', 'CRITICAL'], + ['Failed', 'CRITICAL'], ], disk => [ ['Online', 'OK'], - ['Ok', 'OK'], - ['Unknown', 'OK'], + ['Ok', 'OK'], + ['Unknown', 'OK'], ['Offline', 'CRITICAL'], ], - psu => [ - ['On', 'OK'], - ['Ok', 'OK'], - ['Off', 'CRITICAL'], - ['Unknown', 'CRITICAL'] - ], + psu => [ + ['On', 'OK'], + ['Ok', 'OK'], + ['Off', 'CRITICAL'], + ['Unknown', 'CRITICAL'] + ], volume => [ ['Redundant', 'OK'], - ['Ok', 'OK'], + ['Ok', 'OK'], ['Unprotected', 'WARNING'], ['Degraded', 'CRITICAL'], ['Dead', 'CRITICAL'], ['Unknown', 'CRITICAL'], ], }; - + $self->{components_path} = 'storage::netgear::readynas::snmp::mode::components'; $self->{components_module} = ['psu', 'fan', 'disk', 'volume', 'temperature']; } @@ -73,21 +72,20 @@ sub set_system { sub init_mib_ver { my ($self, %options) = @_; - # make the difference between READYNASOS-MIB (v6) and READYNAS-MIB (v4) - my $oid_MgrSoftwareVersion_v4 = '.1.3.6.1.4.1.4526.18.1.0'; - my $oid_MgrSoftwareVersion_v6 = '.1.3.6.1.4.1.4526.22.1.0'; - - my $result = $options{snmp}->get_leef(oids => [$oid_MgrSoftwareVersion_v4, $oid_MgrSoftwareVersion_v6]); - - $self->{mib_ver} = defined($result->{$oid_MgrSoftwareVersion_v4}) ? 4 : 6; + # make the difference between READYNASOS-MIB (v6) and READYNAS-MIB (v4) + my $oid_MgrSoftwareVersion_v4 = '.1.3.6.1.4.1.4526.18.1.0'; + my $oid_MgrSoftwareVersion_v6 = '.1.3.6.1.4.1.4526.22.1.0'; + + my $result = $options{snmp}->get_leef(oids => [$oid_MgrSoftwareVersion_v4, $oid_MgrSoftwareVersion_v6]); + + $self->{mib_ver} = defined($result->{$oid_MgrSoftwareVersion_v4}) ? 4 : 6; } sub snmp_execute { my ($self, %options) = @_; - $self->{snmp} = $options{snmp}; + $self->{snmp} = $options{snmp}; $self->{results} = $self->{snmp}->get_multiple_table(oids => $self->{request}); - } sub new { @@ -96,12 +94,10 @@ sub new { bless $self, $class; $self->{version} = '1.0'; - - # In v4, fanRPM must be >0 - $options{options}->add_options(arguments => { - "critical:s@" => { name => 'critical', default => ['fan,.*,1:'] }, - }); - + $options{options}->add_options(arguments => + { + }); + return $self; } @@ -138,12 +134,12 @@ Example: --threshold-overload='psu,CRITICAL,^(?!(on)$)' =item B<--warning> -Set warning threshold for temperatures (syntax: type,instance,threshold) +Set warning threshold for temperatures, fan (syntax: type,instance,threshold) Example: --warning='xxxxx,.*,30' =item B<--critical> -Set critical threshold for temperatures (syntax: type,instance,threshold) +Set critical threshold for temperatures, fan (syntax: type,instance,threshold) Example: --critical='xxxxx,.*,40' =back