From 53e18eae5398aa6f041b762fa992c99adbcf606f Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Wed, 18 Sep 2019 10:11:07 +0200 Subject: [PATCH] Fix #1373 --- storage/netapp/snmp/mode/filesys.pm | 50 ++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/storage/netapp/snmp/mode/filesys.pm b/storage/netapp/snmp/mode/filesys.pm index 2ab15c43a..d4695acb6 100644 --- a/storage/netapp/snmp/mode/filesys.pm +++ b/storage/netapp/snmp/mode/filesys.pm @@ -24,12 +24,24 @@ use base qw(centreon::plugins::templates::counter); use strict; use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold catalog_status_calc); + +sub custom_vs_status_output { + my ($self, %options) = @_; + + my $msg = sprintf( + "vserver '%s' status : %s", + $self->{result_values}->{vserver_name}, + $self->{result_values}->{vserver_status}, + ); + return $msg; +} sub set_counters { my ($self, %options) = @_; $self->{maps_counters_type} = [ - { name => 'fs', type => 1, cb_prefix_output => 'prefix_fs_output', message_multiple => 'All filesystems are ok.' }, + { name => 'fs', type => 1, cb_prefix_output => 'prefix_fs_output', message_multiple => 'All filesystems are ok', skipped_code => { -10 => 1 } }, ]; $self->{maps_counters}->{fs} = [ @@ -68,6 +80,14 @@ sub set_counters { ], } }, + { label => 'vserver-status', threshold => 0, set => { + key_values => [ { name => 'vserver_status' }, { name => 'vserver_name' } ], + closure_custom_calc => \&catalog_status_calc, + closure_custom_output => $self->can('custom_vs_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold, + } + }, ]; } @@ -172,11 +192,21 @@ sub new { 'filter-type:s' => { name => 'filter_type' }, 'filter-vserver:s' => { name => 'filter_vserver' }, 'filter-vserver-state:s' => { name => 'filter_vserver_state' }, + 'unknown-vserver-status:s' => { name => 'unknown_vserver_status', default => '' }, + 'warning-vserver-status:s' => { name => 'warning_vserver_status', default => '' }, + 'critical-vserver-status:s' => { name => 'critical_vserver_status', default => '' }, }); return $self; } +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + $self->change_macros(macros => ['warning_vserver_status', 'critical_vserver_status', 'unknown_vserver_status']); +} + my $map_types = { 1 => 'traditionalVolume', 2 => 'flexibleVolume', @@ -315,6 +345,9 @@ sub manage_selection { if ($self->{fs}->{$instance}->{total} > 0) { $self->{fs}->{$instance}->{dfPerCentInodeCapacity} = $result2->{dfPerCentInodeCapacity}; } + + $self->{fs}->{$instance}->{vserver_name} = $result2->{dfVserver}; + $self->{fs}->{$instance}->{vserver_status} = defined($result2->{dfVserver}) ? $self->{vserver}->{$result2->{dfVserver}} : undef; } } @@ -328,6 +361,21 @@ Check filesystem usage (volumes, snapshots and aggregates also). =over 8 +=item B<--unknown-vserver-status> + +Set unknown threshold for status (Default: ''). +Can used special variables like: %{vserver_status}, %{vserver_name} + +=item B<--warning-vserver-status> + +Set warning threshold for status (Default: ''). +Can used special variables like: %{vserver_status}, %{vserver_name} + +=item B<--critical-vserver-status> + +Set critical threshold for status (Default: ''). +Can used special variables like: %{vserver_status}, %{vserver_name} + =item B<--warning-*> Threshold warning.