remove useless code

This commit is contained in:
garnier-quentin 2020-07-29 15:53:22 +02:00
parent a8be50285e
commit 1a5dbae60c
31 changed files with 765 additions and 987 deletions

View File

@ -27,7 +27,7 @@ use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::statefile; use centreon::plugins::statefile;
sub catalog_status_threshold { sub custom_status_threshold {
my ($self, %options) = @_; my ($self, %options) = @_;
my $status = 'ok'; my $status = 'ok';
my $message; my $message;
@ -58,7 +58,8 @@ sub catalog_status_threshold {
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("alarm [%s] [%s] [%s] [%s] %s/%s", my $msg = sprintf(
'alarm [%s] [%s] [%s] [%s] %s/%s',
$self->{result_values}->{status}, $self->{result_values}->{status},
$self->{result_values}->{type}, $self->{result_values}->{type},
$self->{result_values}->{entity_name}, $self->{result_values}->{entity_name},
@ -105,7 +106,7 @@ sub set_counters {
{ name => 'datacenter', type => 2, cb_prefix_output => 'prefix_datacenter_output', cb_long_output => 'datacenter_long_output', message_multiple => 'All datacenters are ok', { name => 'datacenter', type => 2, cb_prefix_output => 'prefix_datacenter_output', cb_long_output => 'datacenter_long_output', message_multiple => 'All datacenters are ok',
group => [ group => [
{ name => 'alarm', cb_init => 'alarm_reset', skipped_code => { -11 => 1 } }, { name => 'alarm', cb_init => 'alarm_reset', skipped_code => { -11 => 1 } },
{ name => 'dc_metrics', display => 0, skipped_code => { -11 => 1 } }, { name => 'dc_metrics', display => 0, skipped_code => { -11 => 1 } }
] ]
} }
]; ];
@ -115,27 +116,29 @@ sub set_counters {
key_values => [ { name => 'yellow' } ], key_values => [ { name => 'yellow' } ],
output_template => '%s warning alarm(s) found(s)', output_template => '%s warning alarm(s) found(s)',
perfdatas => [ perfdatas => [
{ label => 'total_alarm_warning', value => 'yellow', template => '%s', min => 0 }, { label => 'total_alarm_warning', template => '%s', min => 0 }
], ]
} }
}, },
{ label => 'total-alarm-critical', nlabel => 'datacenter.alarms.critical.current.count', set => { { label => 'total-alarm-critical', nlabel => 'datacenter.alarms.critical.current.count', set => {
key_values => [ { name => 'red' } ], key_values => [ { name => 'red' } ],
output_template => '%s critical alarm(s) found(s)', output_template => '%s critical alarm(s) found(s)',
perfdatas => [ perfdatas => [
{ label => 'total_alarm_critical', value => 'red', template => '%s', min => 0 }, { label => 'total_alarm_critical', template => '%s', min => 0 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{alarm} = [ $self->{maps_counters}->{alarm} = [
{ label => 'status', threshold => 0, set => { { label => 'status', threshold => 0, set => {
key_values => [ { name => 'entity_name' }, { name => 'status' }, key_values => [
{ name => 'time' }, { name => 'description' }, { name => 'name' }, { name => 'type' }, { name => 'since' } ], { name => 'entity_name' }, { name => 'status' },
{ name => 'time' }, { name => 'description' }, { name => 'name' }, { name => 'type' }, { name => 'since' }
],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => $self->can('custom_status_threshold')
} }
}, },
]; ];
@ -146,7 +149,7 @@ sub set_counters {
output_template => '', output_template => '',
closure_custom_threshold_check => sub { return 'ok' }, closure_custom_threshold_check => sub { return 'ok' },
closure_custom_calc => $self->can('custom_dcmetrics_calc'), closure_custom_calc_extra_options => { label_ref => 'warning' }, closure_custom_calc => $self->can('custom_dcmetrics_calc'), closure_custom_calc_extra_options => { label_ref => 'warning' },
closure_custom_perfdata => $self->can('custom_dcmetrics_perfdata'), closure_custom_perfdata => $self->can('custom_dcmetrics_perfdata')
} }
}, },
{ label => 'alarm-critical', threshold => 0, set => { { label => 'alarm-critical', threshold => 0, set => {
@ -154,9 +157,9 @@ sub set_counters {
output_template => '', output_template => '',
closure_custom_threshold_check => sub { return 'ok' }, closure_custom_threshold_check => sub { return 'ok' },
closure_custom_calc => $self->can('custom_dcmetrics_calc'), closure_custom_calc_extra_options => { label_ref => 'critical' }, closure_custom_calc => $self->can('custom_dcmetrics_calc'), closure_custom_calc_extra_options => { label_ref => 'critical' },
closure_custom_perfdata => $self->can('custom_dcmetrics_perfdata'), closure_custom_perfdata => $self->can('custom_dcmetrics_perfdata')
} }
}, }
]; ];
} }

View File

@ -27,7 +27,7 @@ use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::statefile; use centreon::plugins::statefile;
sub catalog_status_threshold { sub custom_status_threshold {
my ($self, %options) = @_; my ($self, %options) = @_;
my $status = 'ok'; my $status = 'ok';
my $message; my $message;
@ -104,7 +104,7 @@ sub set_counters {
{ name => 'esxhost', type => 2, cb_prefix_output => 'prefix_esxhost_output', cb_long_output => 'esxhost_long_output', message_multiple => 'All hosts are ok', { name => 'esxhost', type => 2, cb_prefix_output => 'prefix_esxhost_output', cb_long_output => 'esxhost_long_output', message_multiple => 'All hosts are ok',
group => [ group => [
{ name => 'alarm', cb_init => 'alarm_reset', skipped_code => { -11 => 1 } }, { name => 'alarm', cb_init => 'alarm_reset', skipped_code => { -11 => 1 } },
{ name => 'esxhost_metrics', display => 0, skipped_code => { -11 => 1 } }, { name => 'esxhost_metrics', display => 0, skipped_code => { -11 => 1 } }
] ]
} }
]; ];
@ -114,18 +114,18 @@ sub set_counters {
key_values => [ { name => 'yellow' } ], key_values => [ { name => 'yellow' } ],
output_template => '%s warning alarm(s) found(s)', output_template => '%s warning alarm(s) found(s)',
perfdatas => [ perfdatas => [
{ label => 'total_alarm_warning', value => 'yellow', template => '%s', min => 0 }, { label => 'total_alarm_warning', template => '%s', min => 0 }
], ]
} }
}, },
{ label => 'total-alarm-critical', nlabel => 'host.alarms.critical.current.count', set => { { label => 'total-alarm-critical', nlabel => 'host.alarms.critical.current.count', set => {
key_values => [ { name => 'red' } ], key_values => [ { name => 'red' } ],
output_template => '%s critical alarm(s) found(s)', output_template => '%s critical alarm(s) found(s)',
perfdatas => [ perfdatas => [
{ label => 'total_alarm_critical', value => 'red', template => '%s', min => 0 }, { label => 'total_alarm_critical', template => '%s', min => 0 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{alarm} = [ $self->{maps_counters}->{alarm} = [
@ -134,9 +134,9 @@ sub set_counters {
{ name => 'time' }, { name => 'description' }, { name => 'name' }, { name => 'type' }, { name => 'since' } ], { name => 'time' }, { name => 'description' }, { name => 'name' }, { name => 'type' }, { name => 'since' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => $self->can('custom_status_threshold')
} }
}, }
]; ];
$self->{maps_counters}->{esxhost_metrics} = [ $self->{maps_counters}->{esxhost_metrics} = [
@ -145,7 +145,7 @@ sub set_counters {
output_template => '', output_template => '',
closure_custom_threshold_check => sub { return 'ok' }, closure_custom_threshold_check => sub { return 'ok' },
closure_custom_calc => $self->can('custom_esxhost_calc'), closure_custom_calc_extra_options => { label_ref => 'warning' }, closure_custom_calc => $self->can('custom_esxhost_calc'), closure_custom_calc_extra_options => { label_ref => 'warning' },
closure_custom_perfdata => $self->can('custom_esxhost_perfdata'), closure_custom_perfdata => $self->can('custom_esxhost_perfdata')
} }
}, },
{ label => 'alarm-critical', threshold => 0, set => { { label => 'alarm-critical', threshold => 0, set => {
@ -153,9 +153,9 @@ sub set_counters {
output_template => '', output_template => '',
closure_custom_threshold_check => sub { return 'ok' }, closure_custom_threshold_check => sub { return 'ok' },
closure_custom_calc => $self->can('custom_esxhost_calc'), closure_custom_calc_extra_options => { label_ref => 'critical' }, closure_custom_calc => $self->can('custom_esxhost_calc'), closure_custom_calc_extra_options => { label_ref => 'critical' },
closure_custom_perfdata => $self->can('custom_esxhost_perfdata'), closure_custom_perfdata => $self->can('custom_esxhost_perfdata')
} }
}, }
]; ];
} }

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -75,12 +75,14 @@ sub set_counters {
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'on', nlabel => 'host.vm.poweredon.current.count', set => { { label => 'on', nlabel => 'host.vm.poweredon.current.count', set => {
@ -125,22 +127,12 @@ sub new {
'esx-hostname:s' => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
'scope-cluster:s' => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' }
'unknown-status:s' => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
'warning-status:s' => { name => 'warning_status', default => '' },
'critical-status:s' => { name => 'critical_status', default => '' }
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -48,20 +48,22 @@ sub set_counters {
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_cpu', cb_prefix_output => 'prefix_global_cpu_output', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_cpu', cb_prefix_output => 'prefix_global_cpu_output', type => 0, skipped_code => { -10 => 1 } },
{ name => 'cpu', display_long => 0, cb_prefix_output => 'prefix_cpu_output', message_multiple => 'All CPUs are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'cpu', display_long => 0, cb_prefix_output => 'prefix_cpu_output', message_multiple => 'All CPUs are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_cpu} = [ $self->{maps_counters}->{global_cpu} = [
@ -69,20 +71,20 @@ sub set_counters {
key_values => [ { name => 'cpu_average' } ], key_values => [ { name => 'cpu_average' } ],
output_template => '%s %%', output_template => '%s %%',
perfdatas => [ perfdatas => [
{ label => 'cpu_total', value => 'cpu_average', template => '%s', unit => '%', { label => 'cpu_total', template => '%s', unit => '%',
min => 0, max => 100, label_extra_instance => 1 }, min => 0, max => 100, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'total-cpu-mhz', nlabel => 'host.cpu.utilization.mhz', set => { { label => 'total-cpu-mhz', nlabel => 'host.cpu.utilization.mhz', set => {
key_values => [ { name => 'cpu_average_mhz' }, { name => 'cpu_average_mhz_max' } ], key_values => [ { name => 'cpu_average_mhz' }, { name => 'cpu_average_mhz_max' } ],
output_template => '%s MHz', output_template => '%s MHz',
perfdatas => [ perfdatas => [
{ label => 'cpu_total_MHz', value => 'cpu_average_mhz', template => '%s', unit => 'MHz', { label => 'cpu_total_MHz', template => '%s', unit => 'MHz',
min => 0, max => 'cpu_average_mhz_max', label_extra_instance => 1 }, min => 0, max => 'cpu_average_mhz_max', label_extra_instance => 1 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{cpu} = [ $self->{maps_counters}->{cpu} = [
@ -90,11 +92,11 @@ sub set_counters {
key_values => [ { name => 'cpu_usage' }, { name => 'display' } ], key_values => [ { name => 'cpu_usage' }, { name => 'display' } ],
output_template => 'usage : %s', output_template => 'usage : %s',
perfdatas => [ perfdatas => [
{ label => 'cpu', value => 'cpu_usage', template => '%s', unit => '%', { label => 'cpu', template => '%s', unit => '%',
min => 0, max => 100, label_extra_instance => 1 }, min => 0, max => 100, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -131,19 +133,10 @@ sub new {
"esx-hostname:s" => { name => 'esx_hostname' }, "esx-hostname:s" => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, "filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, "scope-datacenter:s" => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, "scope-cluster:s" => { name => 'scope_cluster' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -33,14 +33,6 @@ sub custom_status_output {
return $msg; return $msg;
} }
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{connection_state} = $options{new_datas}->{$self->{instance} . '_connection_state'};
$self->{result_values}->{power_state} = $options{new_datas}->{$self->{instance} . '_power_state'};
return 0;
}
sub set_counters { sub set_counters {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -49,20 +41,21 @@ sub set_counters {
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_cpu', cb_prefix_output => 'prefix_global_cpu_output', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_cpu', cb_prefix_output => 'prefix_global_cpu_output', type => 0, skipped_code => { -10 => 1 } },
{ name => 'cpu', display_long => 0, cb_prefix_output => 'prefix_cpu_output', message_multiple => 'All CPUs are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'cpu', display_long => 0, cb_prefix_output => 'prefix_cpu_output', message_multiple => 'All CPUs are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i',
set => {
key_values => [ { name => 'connection_state' }, { name => 'power_state' } ], key_values => [ { name => 'connection_state' }, { name => 'power_state' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_cpu} = [ $self->{maps_counters}->{global_cpu} = [
@ -70,29 +63,29 @@ sub set_counters {
key_values => [ { name => 'cpu_average' } ], key_values => [ { name => 'cpu_average' } ],
output_template => '%s %%', output_template => '%s %%',
perfdatas => [ perfdatas => [
{ label => 'cpu_total', value => 'cpu_average', template => '%s', unit => '%', { label => 'cpu_total', template => '%s', unit => '%',
min => 0, max => 100, label_extra_instance => 1 }, min => 0, max => 100, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'total-cpu-mhz', nlabel => 'vm.cpu.utilization.mhz', set => { { label => 'total-cpu-mhz', nlabel => 'vm.cpu.utilization.mhz', set => {
key_values => [ { name => 'cpu_average_mhz' } ], key_values => [ { name => 'cpu_average_mhz' } ],
output_template => '%s MHz', output_template => '%s MHz',
perfdatas => [ perfdatas => [
{ label => 'cpu_total_MHz', value => 'cpu_average_mhz', template => '%s', unit => 'MHz', { label => 'cpu_total_MHz', template => '%s', unit => 'MHz',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'cpu-ready', nlabel => 'vm.cpu.ready.percentage', set => { { label => 'cpu-ready', nlabel => 'vm.cpu.ready.percentage', set => {
key_values => [ { name => 'cpu_ready' } ], key_values => [ { name => 'cpu_ready' } ],
output_template => 'ready %s %%', output_template => 'ready %s %%',
perfdatas => [ perfdatas => [
{ label => 'cpu_ready', value => 'cpu_ready', template => '%s', unit => '%', { label => 'cpu_ready', template => '%s', unit => '%',
min => 0, max => 100, label_extra_instance => 1 }, min => 0, max => 100, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{cpu} = [ $self->{maps_counters}->{cpu} = [
@ -100,11 +93,11 @@ sub set_counters {
key_values => [ { name => 'cpu_usage' }, { name => 'display' } ], key_values => [ { name => 'cpu_usage' }, { name => 'display' } ],
output_template => 'usage : %s MHz', output_template => 'usage : %s MHz',
perfdatas => [ perfdatas => [
{ label => 'cpu', value => 'cpu_usage', template => '%s', unit => 'MHz', { label => 'cpu', template => '%s', unit => 'MHz',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -149,36 +142,28 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"vm-hostname:s" => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"scope-host:s" => { name => 'scope_host' }, 'scope-host:s' => { name => 'scope_host' },
"display-description" => { name => 'display_description' }, 'display-description' => { name => 'display_description' },
"filter-description:s" => { name => 'filter_description' }, 'filter-description:s' => { name => 'filter_description' },
"filter-os:s" => { name => 'filter_os' }, 'filter-os:s' => { name => 'filter_os' },
"filter-uuid:s" => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' }
"unknown-status:s" => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{vm} = {}; $self->{vm} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'cpuvm'); params => $self->{option_results},
command => 'cpuvm'
);
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};

View File

@ -25,20 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'accessible ' . $self->{result_values}->{accessible}; return 'accessible ' . $self->{result_values}->{accessible};
return $msg;
}
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{accessible} = $options{new_datas}->{$self->{instance} . '_accessible'};
return 0;
} }
sub set_counters { sub set_counters {
@ -46,7 +38,7 @@ sub set_counters {
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'datastore', type => 1, cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All Datastores are ok' }, { name => 'datastore', type => 1, cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All Datastores are ok' }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
@ -54,67 +46,68 @@ sub set_counters {
key_values => [ { name => 'poweredon' }, { name => 'total' } ], key_values => [ { name => 'poweredon' }, { name => 'total' } ],
output_template => '%s VM(s) poweredon', output_template => '%s VM(s) poweredon',
perfdatas => [ perfdatas => [
{ label => 'poweredon', value => 'poweredon', template => '%s', { label => 'poweredon', template => '%s',
min => 0, max => 'total' }, min => 0, max => 'total' }
], ]
} }
}, },
{ label => 'total-off', nlabel => 'datastore.vm.poweredoff.current.count', set => { { label => 'total-off', nlabel => 'datastore.vm.poweredoff.current.count', set => {
key_values => [ { name => 'poweredoff' }, { name => 'total' } ], key_values => [ { name => 'poweredoff' }, { name => 'total' } ],
output_template => '%s VM(s) poweredoff', output_template => '%s VM(s) poweredoff',
perfdatas => [ perfdatas => [
{ label => 'poweredoff', value => 'poweredoff', template => '%s', { label => 'poweredoff', template => '%s',
min => 0, max => 'total' }, min => 0, max => 'total' }
], ]
} }
}, },
{ label => 'total-suspended', nlabel => 'datastore.vm.suspended.current.count', set => { { label => 'total-suspended', nlabel => 'datastore.vm.suspended.current.count', set => {
key_values => [ { name => 'suspended' }, { name => 'total' } ], key_values => [ { name => 'suspended' }, { name => 'total' } ],
output_template => '%s VM(s) suspended', output_template => '%s VM(s) suspended',
perfdatas => [ perfdatas => [
{ label => 'suspended', value => 'suspended', template => '%s', { label => 'suspended', template => '%s',
min => 0, max => 'total' }, min => 0, max => 'total' }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{datastore} = [ $self->{maps_counters}->{datastore} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{accessible} !~ /^true|1$/i',
set => {
key_values => [ { name => 'accessible' } ], key_values => [ { name => 'accessible' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'on', nlabel => 'datastore.vm.poweredon.current.count', set => { { label => 'on', nlabel => 'datastore.vm.poweredon.current.count', set => {
key_values => [ { name => 'poweredon' }, { name => 'total' } ], key_values => [ { name => 'poweredon' }, { name => 'total' } ],
output_template => '%s VM(s) poweredon', output_template => '%s VM(s) poweredon',
perfdatas => [ perfdatas => [
{ label => 'poweredon', value => 'poweredon', template => '%s', { label => 'poweredon', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'off', nlabel => 'datastore.vm.poweredoff.current.count', set => { { label => 'off', nlabel => 'datastore.vm.poweredoff.current.count', set => {
key_values => [ { name => 'poweredoff' }, { name => 'total' } ], key_values => [ { name => 'poweredoff' }, { name => 'total' } ],
output_template => '%s VM(s) poweredoff', output_template => '%s VM(s) poweredoff',
perfdatas => [ perfdatas => [
{ label => 'poweredoff', value => 'poweredoff', template => '%s', { label => 'poweredoff', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'suspended', nlabel => 'datastore.vm.suspended.current.count', set => { { label => 'suspended', nlabel => 'datastore.vm.suspended.current.count', set => {
key_values => [ { name => 'suspended' }, { name => 'total' } ], key_values => [ { name => 'suspended' }, { name => 'total' } ],
output_template => '%s VM(s) suspended', output_template => '%s VM(s) suspended',
perfdatas => [ perfdatas => [
{ label => 'suspended', value => 'suspended', template => '%s', { label => 'suspended', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -130,31 +123,23 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"datastore-name:s" => { name => 'datastore_name' }, 'datastore-name:s' => { name => 'datastore_name' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' }
"unknown-status:s" => { name => 'unknown_status', default => '%{accessible} !~ /^true|1$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{global} = { poweredon => 0, poweredoff => 0, suspended => 0, total => 0 }; $self->{global} = { poweredon => 0, poweredoff => 0, suspended => 0, total => 0 };
$self->{datastore} = {}; $self->{datastore} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'datastorecountvm'); params => $self->{option_results},
command => 'datastorecountvm'
);
foreach my $ds_id (keys %{$response->{data}}) { foreach my $ds_id (keys %{$response->{data}}) {
my $ds_name = $response->{data}->{$ds_id}->{name}; my $ds_name = $response->{data}->{$ds_id}->{name};

View File

@ -25,13 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -48,20 +47,22 @@ sub set_counters {
{ name => 'host', type => 3, cb_prefix_output => 'prefix_host_output', cb_long_output => 'host_long_output', indent_long_output => ' ', message_multiple => 'All ESX hosts are ok', { name => 'host', type => 3, cb_prefix_output => 'prefix_host_output', cb_long_output => 'host_long_output', indent_long_output => ' ', message_multiple => 'All ESX hosts are ok',
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'datastore', cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All datastores latencies are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'datastore', cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All datastores latencies are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{datastore} = [ $self->{maps_counters}->{datastore} = [
@ -69,20 +70,20 @@ sub set_counters {
key_values => [ { name => 'read_latency' }, { name => 'display' } ], key_values => [ { name => 'read_latency' }, { name => 'display' } ],
output_template => 'read : %s ms', output_template => 'read : %s ms',
perfdatas => [ perfdatas => [
{ label => 'trl', value => 'read_latency', template => '%s', unit => 'ms', { label => 'trl', template => '%s', unit => 'ms',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'write-latency', nlabel => 'host.datastore.latency.write.milliseconds', set => { { label => 'write-latency', nlabel => 'host.datastore.latency.write.milliseconds', set => {
key_values => [ { name => 'write_latency' }, { name => 'display' } ], key_values => [ { name => 'write_latency' }, { name => 'display' } ],
output_template => 'write : %s ms', output_template => 'write : %s ms',
perfdatas => [ perfdatas => [
{ label => 'twl', value => 'write_latency', template => '%s', unit => 'ms', { label => 'twl', template => '%s', unit => 'ms',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -110,33 +111,25 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"datastore-name:s" => { name => 'datastore_name' }, 'datastore-name:s' => { name => 'datastore_name' },
"filter-datastore:s" => { name => 'filter_datastore' }, 'filter-datastore:s' => { name => 'filter_datastore' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'datastorehost'); params => $self->{option_results},
command => 'datastorehost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};

View File

@ -24,20 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'accessible ' . $self->{result_values}->{accessible}; return 'accessible ' . $self->{result_values}->{accessible};
return $msg;
}
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{accessible} = $options{new_datas}->{$self->{instance} . '_accessible'};
return 0;
} }
sub set_counters { sub set_counters {
@ -45,7 +37,7 @@ sub set_counters {
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'datastore', type => 1, cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All Datastores are ok' }, { name => 'datastore', type => 1, cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All datastores are ok' }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
@ -54,9 +46,9 @@ sub set_counters {
output_template => 'Total rate of reading data: %s %s/s', output_template => 'Total rate of reading data: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'total_read_rate', value => 'read', template => '%s', { label => 'total_read_rate', template => '%s',
unit => 'B/s', min => 0 }, unit => 'B/s', min => 0 }
], ]
} }
}, },
{ label => 'total-write', nlabel => 'datastore.write.usage.bytespersecond', set => { { label => 'total-write', nlabel => 'datastore.write.usage.bytespersecond', set => {
@ -64,20 +56,21 @@ sub set_counters {
output_template => 'Total rate of writing data: %s %s/s', output_template => 'Total rate of writing data: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'total_write_rate', value => 'write', template => '%s', { label => 'total_write_rate', template => '%s',
unit => 'B/s', min => 0 }, unit => 'B/s', min => 0 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{datastore} = [ $self->{maps_counters}->{datastore} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{accessible} !~ /^true|1$/i',
set => {
key_values => [ { name => 'accessible' } ], key_values => [ { name => 'accessible' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'read', nlabel => 'datastore.read.usage.bytespersecond', set => { { label => 'read', nlabel => 'datastore.read.usage.bytespersecond', set => {
@ -85,9 +78,9 @@ sub set_counters {
output_template => 'rate of reading data: %s %s/s', output_template => 'rate of reading data: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'read_rate', value => 'read', template => '%s', { label => 'read_rate', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'write', nlabel => 'datastore.write.usage.bytespersecond', set => { { label => 'write', nlabel => 'datastore.write.usage.bytespersecond', set => {
@ -95,11 +88,11 @@ sub set_counters {
output_template => 'rate of writing data: %s %s/s', output_template => 'rate of writing data: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'write_rate', value => 'write', template => '%s', { label => 'write_rate', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -115,22 +108,12 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"datastore-name:s" => { name => 'datastore_name' }, 'datastore-name:s' => { name => 'datastore_name' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' }
"unknown-status:s" => { name => 'unknown_status', default => '%{accessible} !~ /^true|1$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {
@ -138,8 +121,10 @@ sub manage_selection {
$self->{global} = { read => 0, write => 0 }; $self->{global} = { read => 0, write => 0 };
$self->{datastore} = {}; $self->{datastore} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'datastoreio'); params => $self->{option_results},
command => 'datastoreio'
);
foreach my $ds_id (keys %{$response->{data}}) { foreach my $ds_id (keys %{$response->{data}}) {
my $ds_name = $response->{data}->{$ds_id}->{name}; my $ds_name = $response->{data}->{$ds_id}->{name};

View File

@ -25,20 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'accessible ' . $self->{result_values}->{accessible}; return 'accessible ' . $self->{result_values}->{accessible};
return $msg;
}
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{accessible} = $options{new_datas}->{$self->{instance} . '_accessible'};
return 0;
} }
sub set_counters { sub set_counters {
@ -49,20 +41,21 @@ sub set_counters {
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_iops', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_iops', type => 0, skipped_code => { -10 => 1 } },
{ name => 'vm', cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines IOPs are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'vm', cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines IOPs are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{accessible} !~ /^true|1$/i',
set => {
key_values => [ { name => 'accessible' } ], key_values => [ { name => 'accessible' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_iops} = [ $self->{maps_counters}->{global_iops} = [
@ -70,20 +63,20 @@ sub set_counters {
key_values => [ { name => 'read' } ], key_values => [ { name => 'read' } ],
output_template => '%s read iops', output_template => '%s read iops',
perfdatas => [ perfdatas => [
{ label => 'riops', value => 'read', template => '%s', unit => 'iops', { label => 'riops', template => '%s', unit => 'iops',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'write', nlabel => 'datastore.write.usage.iops', set => { { label => 'write', nlabel => 'datastore.write.usage.iops', set => {
key_values => [ { name => 'write' } ], key_values => [ { name => 'write' } ],
output_template => '%s write iops', output_template => '%s write iops',
perfdatas => [ perfdatas => [
{ label => 'wiops', value => 'write', template => '%s', unit => 'iops', { label => 'wiops', template => '%s', unit => 'iops',
min => 0, max => 'write', label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{vm} = [ $self->{maps_counters}->{vm} = [
@ -91,20 +84,20 @@ sub set_counters {
key_values => [ { name => 'read' } ], key_values => [ { name => 'read' } ],
output_template => '%s read iops', output_template => '%s read iops',
perfdatas => [ perfdatas => [
{ label => 'vm_riops', value => 'read', template => '%s', unit => 'iops', { label => 'vm_riops', template => '%s', unit => 'iops',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'write-vm', nlabel => 'datastore.vm.write.usage.iops', set => { { label => 'write-vm', nlabel => 'datastore.vm.write.usage.iops', set => {
key_values => [ { name => 'write' } ], key_values => [ { name => 'write' } ],
output_template => '%s write iops', output_template => '%s write iops',
perfdatas => [ perfdatas => [
{ label => 'vm_wiops', value => 'write', template => '%s', unit => 'iops', { label => 'vm_wiops', template => '%s', unit => 'iops',
min => 0, max => 'write', label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -130,25 +123,15 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"datastore-name:s" => { name => 'datastore_name' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"detail-iops-min:s" => { name => 'detail_iops_min', default => 50 },
"unknown-status:s" => { name => 'unknown_status', default => '%{accessible} !~ /^true|1$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'datastore-name:s' => { name => 'datastore_name' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' },
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']); 'detail-iops-min:s' => { name => 'detail_iops_min', default => 50 }
});
return $self;
} }
sub manage_selection { sub manage_selection {

View File

@ -25,20 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'accessible ' . $self->{result_values}->{accessible}; return 'accessible ' . $self->{result_values}->{accessible};
return $msg;
}
sub custom_status_calc {
my ($self, %options) = @_;
$self->{result_values}->{accessible} = $options{new_datas}->{$self->{instance} . '_accessible'};
return 0;
} }
sub set_counters { sub set_counters {
@ -49,20 +41,21 @@ sub set_counters {
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_snapshot', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_snapshot', type => 0, skipped_code => { -10 => 1 } },
{ name => 'files', cb_prefix_output => 'prefix_files_output', message_multiple => 'All snapshot files are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'files', cb_prefix_output => 'prefix_files_output', message_multiple => 'All snapshot files are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{accessible} !~ /^true|1$/i',
set => {
key_values => [ { name => 'accessible' } ], key_values => [ { name => 'accessible' } ],
closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_snapshot} = [ $self->{maps_counters}->{global_snapshot} = [
@ -71,21 +64,21 @@ sub set_counters {
output_template => 'total snapshots [size = %s %s]', output_template => 'total snapshots [size = %s %s]',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'total_size', value => 'total', template => '%s', unit => 'B', { label => 'total_size', template => '%s', unit => 'B',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{files} = [ $self->{maps_counters}->{files} = [
{ label => 'snapshot', nlabel => 'datastore.snapshot.usage.bytes', set => { { label => 'snapshot', nlabel => 'datastore.snapshot.usage.bytes', set => {
key_values => [ { name => 'total' } ], key_values => [ { name => 'total' } ]
output_template => '[size = %s %s]', output_template => '[size = %s %s]',
output_change_bytes => 1, output_change_bytes => 1,
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; }
} }
}, }
]; ];
} }
@ -111,32 +104,24 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"datastore-name:s" => { name => 'datastore_name' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"unknown-status:s" => { name => 'unknown_status', default => '%{accessible} !~ /^true|1$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'datastore-name:s' => { name => 'datastore_name' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']); });
return $self;
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{datastore} = {}; $self->{datastore} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'datastoresnapshot'); params => $self->{option_results},
command => 'datastoresnapshot'
);
my $i = 0; my $i = 0;
foreach my $ds_id (keys %{$response->{data}}) { foreach my $ds_id (keys %{$response->{data}}) {
@ -148,14 +133,14 @@ sub manage_selection {
}, },
global_snapshot => { global_snapshot => {
total => 0 total => 0
}, }
}; };
foreach (@{$response->{data}->{$ds_id}->{snapshost}}) { foreach (@{$response->{data}->{$ds_id}->{snapshost}}) {
$self->{datastore}->{$ds_name}->{files}->{$i} = { $self->{datastore}->{$ds_name}->{files}->{$i} = {
folder_path => $_->{folder_path}, folder_path => $_->{folder_path},
path => $_->{path}, path => $_->{path},
total => $_->{size}, total => $_->{size}
}; };
$self->{datastore}->{$ds_name}->{global_snapshot}->{total} += $_->{size}; $self->{datastore}->{$ds_name}->{global_snapshot}->{total} += $_->{size};
$i++; $i++;

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'accessible ' . $self->{result_values}->{accessible}; return 'accessible ' . $self->{result_values}->{accessible};
return $msg;
} }
sub custom_usage_output { sub custom_usage_output {
@ -85,38 +84,40 @@ sub set_counters {
]; ];
$self->{maps_counters}->{datastore} = [ $self->{maps_counters}->{datastore} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{accessible} !~ /^true|1$/i',
set => {
key_values => [ { name => 'accessible' }, { name => 'display' } ], key_values => [ { name => 'accessible' }, { name => 'display' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'usage', nlabel => 'datastore.space.usage.bytes', set => { { label => 'usage', nlabel => 'datastore.space.usage.bytes', set => {
key_values => [ { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' }, { name => 'display' }, ], key_values => [ { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' }, { name => 'display' }, ],
closure_custom_output => $self->can('custom_usage_output'), closure_custom_output => $self->can('custom_usage_output'),
perfdatas => [ perfdatas => [
{ label => 'used', value => 'used_space', template => '%d', min => 0, max => 'total_space', { label => 'used', template => '%d', min => 0, max => 'total_space',
unit => 'B', cast_int => 1, label_extra_instance => 1, instance_use => 'display' }, unit => 'B', cast_int => 1, label_extra_instance => 1, instance_use => 'display' }
], ]
} }
}, },
{ label => 'usage-free', nlabel => 'datastore.space.free.bytes', display_ok => 0, set => { { label => 'usage-free', nlabel => 'datastore.space.free.bytes', display_ok => 0, set => {
key_values => [ { name => 'free_space' }, { name => 'used_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' }, { name => 'display' }, ], key_values => [ { name => 'free_space' }, { name => 'used_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' }, { name => 'display' }, ],
closure_custom_output => $self->can('custom_usage_output'), closure_custom_output => $self->can('custom_usage_output'),
perfdatas => [ perfdatas => [
{ label => 'free', value => 'free_space', template => '%d', min => 0, max => 'total_space', { label => 'free', template => '%d', min => 0, max => 'total_space',
unit => 'B', cast_int => 1, label_extra_instance => 1, instance_use => 'display' }, unit => 'B', cast_int => 1, label_extra_instance => 1, instance_use => 'display' }
], ]
} }
}, },
{ label => 'usage-prct', nlabel => 'datastore.space.usage.percentage', display_ok => 0, set => { { label => 'usage-prct', nlabel => 'datastore.space.usage.percentage', display_ok => 0, set => {
key_values => [ { name => 'prct_used_space' }, { name => 'display' } ], key_values => [ { name => 'prct_used_space' }, { name => 'display' } ],
output_template => 'used : %.2f %%', output_template => 'used: %.2f %%',
perfdatas => [ perfdatas => [
{ label => 'used_prct', value => 'prct_used_space', template => '%.2f', min => 0, max => 100, { label => 'used_prct', template => '%.2f', min => 0, max => 100,
unit => '%', label_extra_instance => 1, instance_use => 'display' }, unit => '%', label_extra_instance => 1, instance_use => 'display' }
], ]
} }
}, },
{ label => 'provisioned', nlabel => 'datastore.space.provisioned.bytes', set => { { label => 'provisioned', nlabel => 'datastore.space.provisioned.bytes', set => {
@ -126,8 +127,8 @@ sub set_counters {
threshold_use => 'prct_uncommitted', threshold_use => 'prct_uncommitted',
perfdatas => [ perfdatas => [
{ label => 'provisioned', value => 'total_uncommitted', template => '%s', unit => 'B', { label => 'provisioned', value => 'total_uncommitted', template => '%s', unit => 'B',
min => 0, max => 'total_space', label_extra_instance => 1 }, min => 0, max => 'total_space', label_extra_instance => 1 }
], ]
} }
} }
]; ];
@ -149,12 +150,9 @@ sub new {
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
'units:s' => { name => 'units', default => '%' }, 'units:s' => { name => 'units', default => '%' },
'free' => { name => 'free' }, 'free' => { name => 'free' }
'unknown-status:s' => { name => 'unknown_status', default => '%{accessible} !~ /^true|1$/i' },
'warning-status:s' => { name => 'warning_status', default => '' },
'critical-status:s' => { name => 'critical_status', default => '' }
}); });
return $self; return $self;
} }
@ -175,7 +173,6 @@ sub check_options {
$self->SUPER::check_options(%options); $self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
if (!defined($self->{option_results}->{units}) || $self->{option_results}->{units} !~ /^(%|B)$/) { if (!defined($self->{option_results}->{units}) || $self->{option_results}->{units} !~ /^(%|B)$/) {
$self->{output}->add_option_msg(short_msg => "Wrong units option '" . $self->{option_results}->{units} . "'."); $self->{output}->add_option_msg(short_msg => "Wrong units option '" . $self->{option_results}->{units} . "'.");
$self->{output}->option_exit(); $self->{output}->option_exit();

View File

@ -25,13 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::misc; use centreon::plugins::misc;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']'; return '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']';
return $msg;
} }
sub set_counters { sub set_counters {
@ -42,19 +41,21 @@ sub set_counters {
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_vm', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_vm', type => 0, skipped_code => { -10 => 1 } },
{ name => 'datastore', cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All datastores are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'datastore', cb_prefix_output => 'prefix_datastore_output', message_multiple => 'All datastores are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i',
set => {
key_values => [ { name => 'connection_state' }, { name => 'power_state' } ], key_values => [ { name => 'connection_state' }, { name => 'power_state' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_vm} = [ $self->{maps_counters}->{global_vm} = [
@ -62,11 +63,11 @@ sub set_counters {
key_values => [ { name => 'total_latency' } ], key_values => [ { name => 'total_latency' } ],
output_template => 'max total latency is %s ms', output_template => 'max total latency is %s ms',
perfdatas => [ perfdatas => [
{ label => 'max_total_latency', value => 'total_latency', template => '%s', unit => 'ms', { label => 'max_total_latency', template => '%s', unit => 'ms',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{datastore} = [ $self->{maps_counters}->{datastore} = [
@ -74,20 +75,20 @@ sub set_counters {
key_values => [ { name => 'read' } ], key_values => [ { name => 'read' } ],
output_template => '%s read iops', output_template => '%s read iops',
perfdatas => [ perfdatas => [
{ label => 'riops', value => 'read', template => '%s', unit => 'iops', { label => 'riops', template => '%s', unit => 'iops',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'write', nlabel => 'vm.datastore.write.usage.iops', set => { { label => 'write', nlabel => 'vm.datastore.write.usage.iops', set => {
key_values => [ { name => 'write' } ], key_values => [ { name => 'write' } ],
output_template => '%s write iops', output_template => '%s write iops',
perfdatas => [ perfdatas => [
{ label => 'wiops', value => 'write', template => '%s', unit => 'iops', { label => 'wiops', template => '%s', unit => 'iops',
min => 0, max => 'write', label_extra_instance => 1 }, min => 0, max => 'write', label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -99,7 +100,7 @@ sub prefix_vm_output {
$msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']'; $msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']';
} }
$msg .= ' : '; $msg .= ' : ';
return $msg; return $msg;
} }
@ -110,7 +111,7 @@ sub vm_long_output {
if (defined($options{instance_value}->{config_annotation})) { if (defined($options{instance_value}->{config_annotation})) {
$msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']'; $msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']';
} }
return $msg; return $msg;
} }
@ -124,7 +125,7 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'vm-hostname:s' => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
@ -136,22 +137,12 @@ sub new {
'filter-uuid:s' => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' },
'display-description' => { name => 'display_description' }, 'display-description' => { name => 'display_description' },
'datastore-name:s' => { name => 'datastore_name' }, 'datastore-name:s' => { name => 'datastore_name' },
'filter-datastore:s' => { name => 'filter_datastore' }, 'filter-datastore:s' => { name => 'filter_datastore' }
'unknown-status:s' => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i' },
'warning-status:s' => { name => 'warning_status', default => '' },
'critical-status:s' => { name => 'critical_status', default => '' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -172,7 +163,7 @@ sub manage_selection {
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};
$self->{vm}->{$vm_name} = { display => $vm_name, $self->{vm}->{$vm_name} = { display => $vm_name,
datastore => {}, datastore => {},
global => { global => {
@ -181,7 +172,7 @@ sub manage_selection {
}, },
global_vm => { global_vm => {
total_latency => $response->{data}->{$vm_id}->{'disk.maxTotalLatency.latest'}, total_latency => $response->{data}->{$vm_id}->{'disk.maxTotalLatency.latest'},
}, }
}; };
if (defined($self->{option_results}->{display_description})) { if (defined($self->{option_results}->{display_description})) {

View File

@ -24,20 +24,18 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']'; return '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']';
return $msg;
} }
sub custom_device_output { sub custom_device_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("%s %s device connected", $self->{result_values}->{device_connected}, $self->{instance_mode}->{option_results}->{device}); return sprintf("%s %s device connected", $self->{result_values}->{device_connected}, $self->{instance_mode}->{option_results}->{device});
return $msg;
} }
sub set_counters { sub set_counters {
@ -45,7 +43,7 @@ sub set_counters {
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok' }, { name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok' }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
@ -53,30 +51,32 @@ sub set_counters {
key_values => [ { name => 'device_connected' } ], key_values => [ { name => 'device_connected' } ],
closure_custom_output => $self->can('custom_device_output'), closure_custom_output => $self->can('custom_device_output'),
perfdatas => [ perfdatas => [
{ label => 'total_device_connected', value => 'device_connected', template => '%s', { label => 'total_device_connected', template => '%s',
min => 0 }, min => 0 }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{vm} = [ $self->{maps_counters}->{vm} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i',
set => {
key_values => [ { name => 'connection_state' }, { name => 'power_state' } ], key_values => [ { name => 'connection_state' }, { name => 'power_state' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'device-connected', nlabel => 'vm.devices.connected.count', set => { { label => 'device-connected', nlabel => 'vm.devices.connected.count', set => {
key_values => [ { name => 'device_connected' }, { name => 'display' } ], key_values => [ { name => 'device_connected' }, { name => 'display' } ],
oclosure_custom_output => $self->can('custom_device_output'), oclosure_custom_output => $self->can('custom_device_output'),
perfdatas => [ perfdatas => [
{ label => 'device_connected', value => 'device_connected', template => '%s', { label => 'device_connected', template => '%s',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -88,7 +88,7 @@ sub prefix_vm_output {
$msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']'; $msg .= ' [annotation: ' . $options{instance_value}->{config_annotation} . ']';
} }
$msg .= ' : '; $msg .= ' : ';
return $msg; return $msg;
} }
@ -96,7 +96,7 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"vm-hostname:s" => { name => 'vm_hostname' }, "vm-hostname:s" => { name => 'vm_hostname' },
"filter" => { name => 'filter' }, "filter" => { name => 'filter' },
@ -107,10 +107,7 @@ sub new {
"filter-os:s" => { name => 'filter_os' }, "filter-os:s" => { name => 'filter_os' },
"filter-uuid:s" => { name => 'filter_uuid' }, "filter-uuid:s" => { name => 'filter_uuid' },
"display-description" => { name => 'display_description' }, "display-description" => { name => 'display_description' },
"device:s" => { name => 'device' }, "device:s" => { name => 'device' }
"unknown-status:s" => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self; return $self;
@ -119,10 +116,9 @@ sub new {
sub check_options { sub check_options {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->SUPER::check_options(%options); $self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
if (!defined($self->{option_results}->{device}) || $self->{option_results}->{device} eq '') { if (!defined($self->{option_results}->{device}) || $self->{option_results}->{device} eq '') {
$self->{output}->add_option_msg(short_msg => "Please set device option."); $self->{output}->add_option_msg(short_msg => 'Please set device option.');
$self->{output}->option_exit(); $self->{output}->option_exit();
} }
} }
@ -132,8 +128,10 @@ sub manage_selection {
$self->{global} = { device_connected => 0 }; $self->{global} = { device_connected => 0 };
$self->{vm} = {}; $self->{vm} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'devicevm'); params => $self->{option_results},
command => 'devicevm'
);
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};
@ -141,13 +139,13 @@ sub manage_selection {
display => $vm_name, display => $vm_name,
connection_state => $response->{data}->{$vm_id}->{connection_state}, connection_state => $response->{data}->{$vm_id}->{connection_state},
power_state => $response->{data}->{$vm_id}->{power_state}, power_state => $response->{data}->{$vm_id}->{power_state},
device_connected => $response->{data}->{$vm_id}->{total_device_connected}, device_connected => $response->{data}->{$vm_id}->{total_device_connected}
}; };
if (defined($self->{option_results}->{display_description})) { if (defined($self->{option_results}->{display_description})) {
$self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'}); $self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'});
} }
$self->{global}->{device_connected} += $self->{vm}->{$vm_name}->{device_connected}; $self->{global}->{device_connected} += $self->{vm}->{$vm_name}->{device_connected};
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -61,7 +60,7 @@ sub set_counters {
group => [ group => [
{ name => 'global_host', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_host', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_problems', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_problems', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_summary', type => 1 }, { name => 'global_summary', type => 1 }
] ]
} }
]; ];
@ -71,22 +70,24 @@ sub set_counters {
key_values => [ { name => 'total_problems' }, { name => 'total' } ], key_values => [ { name => 'total_problems' }, { name => 'total' } ],
output_template => '%s total health issue(s) found', output_template => '%s total health issue(s) found',
perfdatas => [ perfdatas => [
{ label => 'total_problems', value => 'total_problems', template => '%s', { label => 'total_problems', template => '%s',
min => 0, max => 'total' }, min => 0, max => 'total' }
], ]
} }
}, }
]; ];
$self->{maps_counters}->{global_host} = [ $self->{maps_counters}->{global_host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{global_problems} = [ $self->{maps_counters}->{global_problems} = [
@ -100,27 +101,27 @@ sub set_counters {
key_values => [ { name => 'total_problems' }, { name => 'total' } ], key_values => [ { name => 'total_problems' }, { name => 'total' } ],
output_template => '%s total health issue(s) found', output_template => '%s total health issue(s) found',
perfdatas => [ perfdatas => [
{ label => 'problems', value => 'total_problems', template => '%s', { label => 'problems', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'problems-yellow', nlabel => 'host.health.yellow.current.count', set => { { label => 'problems-yellow', nlabel => 'host.health.yellow.current.count', set => {
key_values => [ { name => 'yellow' }, { name => 'total' } ], key_values => [ { name => 'yellow' }, { name => 'total' } ],
output_template => '%s yellow health issue(s) found', output_template => '%s yellow health issue(s) found',
perfdatas => [ perfdatas => [
{ label => 'problems_yellow', value => 'yellow', template => '%s', { label => 'problems_yellow', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'problems-red', nlabel => 'host.health.red.current.count', set => { { label => 'problems-red', nlabel => 'host.health.red.current.count', set => {
key_values => [ { name => 'red' }, { name => 'total' } ], key_values => [ { name => 'red' }, { name => 'total' } ],
output_template => '%s red health issue(s) found', output_template => '%s red health issue(s) found',
perfdatas => [ perfdatas => [
{ label => 'problems_red', value => 'red', template => '%s', { label => 'problems_red', template => '%s',
min => 0, max => 'total', label_extra_instance => 1 }, min => 0, max => 'total', label_extra_instance => 1 }
], ]
} }
}, },
]; ];
@ -129,9 +130,9 @@ sub set_counters {
{ label => 'global-summary', threshold => 0, set => { { label => 'global-summary', threshold => 0, set => {
key_values => [ { name => 'type' }, { name => 'name' }, { name => 'summary' } ], key_values => [ { name => 'type' }, { name => 'name' }, { name => 'summary' } ],
closure_custom_output => $self->can('custom_summary_output'), closure_custom_output => $self->can('custom_summary_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; }
} }
}, }
]; ];
} }
@ -163,26 +164,16 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' },
"storage-status" => { name => 'storage_status' },
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'esx-hostname:s' => { name => 'esx_hostname' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' },
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']); 'scope-cluster:s' => { name => 'scope_cluster' },
'storage-status' => { name => 'storage_status' }
});
return $self;
} }
sub manage_selection { sub manage_selection {
@ -190,8 +181,10 @@ sub manage_selection {
$self->{global} = { total_problems => 0, total => 0 }; $self->{global} = { total_problems => 0, total => 0 };
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'healthhost'); params => $self->{option_results},
command => 'healthhost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
@ -201,8 +194,8 @@ sub manage_selection {
}, },
global_summary => {}, global_summary => {},
global_problems => { global_problems => {
ok => 0, total_problems => 0, red => 0, yellow => 0, total => 0, ok => 0, total_problems => 0, red => 0, yellow => 0, total => 0
}, }
}; };
my $i = 0; my $i = 0;
@ -219,7 +212,7 @@ sub manage_selection {
$self->{host}->{$host_name}->{global_summary}->{$i} = { $self->{host}->{$host_name}->{global_summary}->{$i} = {
type => defined($entry->{type}) ? $entry->{type} : '', type => defined($entry->{type}) ? $entry->{type} : '',
name => $entry->{name}, name => $entry->{name},
summary => $entry->{summary}, summary => $entry->{summary}
}; };
} }
} }
@ -227,7 +220,7 @@ sub manage_selection {
$i++; $i++;
} }
} }
$self->{global}->{total_problems} += $self->{host}->{$host_name}->{global_problems}->{red} + $self->{host}->{$host_name}->{global_problems}->{yellow}; $self->{global}->{total_problems} += $self->{host}->{$host_name}->{global_problems}->{red} + $self->{host}->{$host_name}->{global_problems}->{yellow};
$self->{global}->{total} += $self->{host}->{$host_name}->{global_problems}->{total}; $self->{global}->{total} += $self->{host}->{$host_name}->{global_problems}->{total};
} }

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_limit_output { sub custom_limit_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -47,7 +47,7 @@ sub custom_limit_calc {
$self->{result_values}->{connection_state} = $options{new_datas}->{$self->{instance} . '_connection_state'}; $self->{result_values}->{connection_state} = $options{new_datas}->{$self->{instance} . '_connection_state'};
$self->{result_values}->{power_state} = $options{new_datas}->{$self->{instance} . '_power_state'}; $self->{result_values}->{power_state} = $options{new_datas}->{$self->{instance} . '_power_state'};
$self->{result_values}->{name} = $options{new_datas}->{$self->{instance} . '_name'}; $self->{result_values}->{name} = $options{new_datas}->{$self->{instance} . '_name'};
return 0; return 0;
} }
@ -63,38 +63,46 @@ sub set_counters {
}, },
{ name => 'disk_alarms', type => 2, cb_long_output => 'disk_long_output', message_multiple => '0 disk limit problem(s) detected', format_output => '%s disk limit problem(s) detected', display_counter_problem => { label => 'disk_alerts', nlabel => 'vm.limit.disk.alerts.count', min => 0 }, { name => 'disk_alarms', type => 2, cb_long_output => 'disk_long_output', message_multiple => '0 disk limit problem(s) detected', format_output => '%s disk limit problem(s) detected', display_counter_problem => { label => 'disk_alerts', nlabel => 'vm.limit.disk.alerts.count', min => 0 },
group => [ { name => 'disk_alarm', cb_prefix_output => 'prefix_vm_output', skipped_code => { -11 => 1 } } ] group => [ { name => 'disk_alarm', cb_prefix_output => 'prefix_vm_output', skipped_code => { -11 => 1 } } ]
}, }
]; ];
$self->{maps_counters}->{cpu_alarm} = [ $self->{maps_counters}->{cpu_alarm} = [
{ label => 'cpu-status', threshold => 0, set => { {
label => 'cpu-status', type => 2, critical_default => '%{connection_state} !~ /^connected$/i || %{limit} != -1',
set => {
key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'cpu_limit' } ], key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'cpu_limit' } ],
closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'cpu' }, closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'cpu' },
closure_custom_output => $self->can('custom_limit_output'), closure_custom_output => $self->can('custom_limit_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{memory_alarm} = [ $self->{maps_counters}->{memory_alarm} = [
{ label => 'memory-status', threshold => 0, set => { {
label => 'memory-status', type => 2, critical_default => '%{connection_state} !~ /^connected$/i || %{limit} != -1',
set => {
key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'memory_limit' } ], key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'memory_limit' } ],
closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'memory' }, closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'memory' },
closure_custom_output => $self->can('custom_limit_output'), closure_custom_output => $self->can('custom_limit_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{disk_alarm} = [ $self->{maps_counters}->{disk_alarm} = [
{ label => 'disk-status', threshold => 0, set => { {
label => 'disk-status', type => 2, critical_default => '%{connection_state} !~ /^connected$/i || %{limit} != -1',
set => {
key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'disk_limit' } ], key_values => [ { name => 'name' }, { name => 'connection_state' }, { name => 'power_state' }, { name => 'disk_limit' } ],
closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'disk' }, closure_custom_calc => $self->can('custom_limit_calc'), closure_custom_calc_extra_options => { label_ref => 'disk' },
closure_custom_output => $self->can('custom_limit_output'), closure_custom_output => $self->can('custom_limit_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
} }
@ -134,37 +142,25 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"vm-hostname:s" => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"filter-description:s" => { name => 'filter_description' }, 'filter-description:s' => { name => 'filter_description' },
"filter-os:s" => { name => 'filter_os' }, 'filter-os:s' => { name => 'filter_os' },
"filter-uuid:s" => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' },
"display-description" => { name => 'display_description' }, 'display-description' => { name => 'display_description' },
"check-disk-limit" => { name => 'check_disk_limit' }, 'check-disk-limit' => { name => 'check_disk_limit' }
"warning-disk-status:s" => { name => 'warning_disk_status', default => '' },
"critical-disk-status:s" => { name => 'critical_disk_status', default => '%{connection_state} !~ /^connected$/i || %{limit} != -1' },
"warning-cpu-status:s" => { name => 'warning_cpu_status', default => '' },
"critical-cpu-status:s" => { name => 'critical_cpu_status', default => '%{connection_state} !~ /^connected$/i || %{limit} != -1' },
"warning-memory-status:s" => { name => 'warning_memory_status', default => '' },
"critical-memory-status:s" => { name => 'critical_memory_status', default => '%{connection_state} !~ /^connected$/i || %{limit} != -1' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['warning_disk_status', 'critical_disk_status','warning_memory_status', 'critical_memory_status',
'warning_cpu_status', 'critical_cpu_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'limitvm'); params => $self->{option_results},
command => 'limitvm'
);
my $i = 0; my $i = 0;
$self->{cpu_alarms}->{global} = { cpu_alarm => {} }; $self->{cpu_alarms}->{global} = { cpu_alarm => {} };
@ -172,7 +168,7 @@ sub manage_selection {
$self->{disk_alarms}->{global} = { disk_alarm => {} } if (defined($self->{option_results}->{check_disk_limit})); $self->{disk_alarms}->{global} = { disk_alarm => {} } if (defined($self->{option_results}->{check_disk_limit}));
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};
$self->{cpu_alarms}->{global}->{cpu_alarm}->{$i} = { $self->{cpu_alarms}->{global}->{cpu_alarm}->{$i} = {
name => $vm_name, name => $vm_name,
config_annotation => defined($self->{option_results}->{display_description}) ? $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'}) : undef, config_annotation => defined($self->{option_results}->{display_description}) ? $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'}) : undef,
@ -187,7 +183,7 @@ sub manage_selection {
power_state => $response->{data}->{$vm_id}->{power_state}, power_state => $response->{data}->{$vm_id}->{power_state},
memory_limit => $response->{data}->{$vm_id}->{'config.memoryAllocation.limit'} memory_limit => $response->{data}->{$vm_id}->{'config.memoryAllocation.limit'}
}; };
if (defined($self->{option_results}->{check_disk_limit})) { if (defined($self->{option_results}->{check_disk_limit})) {
$self->{disk_alarms}->{global}->{disk_alarm}->{$i} = { $self->{disk_alarms}->{global}->{disk_alarm}->{$i} = {
name => $vm_name, name => $vm_name,
@ -196,14 +192,14 @@ sub manage_selection {
power_state => $response->{data}->{$vm_id}->{power_state}, power_state => $response->{data}->{$vm_id}->{power_state},
disk_limit => -1 disk_limit => -1
}; };
foreach (@{$response->{data}->{$vm_id}->{'config.storageIOAllocation.limit'}}) { foreach (@{$response->{data}->{$vm_id}->{'config.storageIOAllocation.limit'}}) {
if ($_->{limit} != -1) { if ($_->{limit} != -1) {
$self->{disk_alarms}->{global}->{disk_alarm}->{$i}->{disk_limit} = 1; $self->{disk_alarms}->{global}->{disk_alarm}->{$i}->{disk_limit} = 1;
} }
} }
} }
$i++; $i++;
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -43,33 +42,36 @@ sub custom_status_calc {
sub custom_maintenance_output { sub custom_maintenance_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'maintenance mode is ' . $self->{result_values}->{maintenance}; return 'maintenance mode is ' . $self->{result_values}->{maintenance};
return $msg;
} }
sub set_counters { sub set_counters {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'host', type => 1, cb_prefix_output => 'prefix_host_output', message_multiple => 'All ESX Hosts are ok' }, { name => 'host', type => 1, cb_prefix_output => 'prefix_host_output', message_multiple => 'All ESX Hosts are ok' }
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'maintenance-status', threshold => 0, set => { {
label => 'maintenance-status', type => 2, critical_default => '%{maintenance} !~ /false/',
set => {
key_values => [ { name => 'maintenance' } ], key_values => [ { name => 'maintenance' } ],
closure_custom_output => $self->can('custom_maintenance_output'), closure_custom_output => $self->can('custom_maintenance_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
} }
@ -83,43 +85,32 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' },
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
"warning-maintenance-status:s" => { name => 'warning_maintenance_status', default => '' },
"critical-maintenance-status:s" => { name => 'critical_maintenance_status', default => '%{maintenance} !~ /false/' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'esx-hostname:s' => { name => 'esx_hostname' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' },
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status', 'scope-cluster:s' => { name => 'scope_cluster' }
'warning_maintenance_status', 'critical_maintenance_status']); });
return $self;
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'maintenancehost'); params => $self->{option_results},
command => 'maintenancehost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
$self->{host}->{$host_name} = { $self->{host}->{$host_name} = {
display => $host_name, display => $host_name,
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
maintenance => $response->{data}->{$host_id}->{inMaintenanceMode}, maintenance => $response->{data}->{$host_id}->{inMaintenanceMode}
}; };
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status : ' . $self->{result_values}->{status}; return 'status : ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -87,10 +86,12 @@ sub custom_usage_output {
my ($total_size_value, $total_size_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{total}); my ($total_size_value, $total_size_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{total});
my ($total_used_value, $total_used_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{used}); my ($total_used_value, $total_used_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{used});
my ($total_free_value, $total_free_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{free}); my ($total_free_value, $total_free_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{free});
my $msg = sprintf("Memory 'consumed' Usage Total: %s Used: %s (%.2f%%) Free: %s (%.2f%%)", my $msg = sprintf(
$total_size_value . " " . $total_size_unit, "Memory 'consumed' Usage Total: %s Used: %s (%.2f%%) Free: %s (%.2f%%)",
$total_used_value . " " . $total_used_unit, $self->{result_values}->{prct_used}, $total_size_value . " " . $total_size_unit,
$total_free_value . " " . $total_free_unit, $self->{result_values}->{prct_free}); $total_used_value . " " . $total_used_unit, $self->{result_values}->{prct_used},
$total_free_value . " " . $total_free_unit, $self->{result_values}->{prct_free}
);
return $msg; return $msg;
} }
@ -117,16 +118,16 @@ sub custom_overhead_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my ($overhead_value, $overhead_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{overhead}); my ($overhead_value, $overhead_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{overhead});
my $msg = sprintf("Memory Overhead: %s", return sprintf(
$overhead_value . " " . $overhead_unit); "Memory Overhead: %s",
return $msg; $overhead_value . " " . $overhead_unit
);
} }
sub custom_memstate_output { sub custom_memstate_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'Memory state is ' . $self->{result_values}->{mem_state_str}; return 'Memory state is ' . $self->{result_values}->{mem_state_str};
return $msg;
} }
sub set_counters { sub set_counters {
@ -137,12 +138,14 @@ sub set_counters {
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' }, { name => 'display' } ], key_values => [ { name => 'state' }, { name => 'display' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'consumed-memory', nlabel => 'host.memory.usage.bytes', set => { { label => 'consumed-memory', nlabel => 'host.memory.usage.bytes', set => {
@ -150,27 +153,27 @@ sub set_counters {
closure_custom_calc => $self->can('custom_usage_calc'), closure_custom_calc => $self->can('custom_usage_calc'),
closure_custom_output => $self->can('custom_usage_output'), closure_custom_output => $self->can('custom_usage_output'),
closure_custom_perfdata => $self->can('custom_usage_perfdata'), closure_custom_perfdata => $self->can('custom_usage_perfdata'),
closure_custom_threshold_check => $self->can('custom_usage_threshold'), closure_custom_threshold_check => $self->can('custom_usage_threshold')
} }
}, },
{ label => 'overhead-memory', nlabel => 'host.memory.overhead.bytes', set => { { label => 'overhead-memory', nlabel => 'host.memory.overhead.bytes', set => {
key_values => [ { name => 'overhead' }, { name => 'display' } ], key_values => [ { name => 'overhead' }, { name => 'display' } ],
closure_custom_output => $self->can('custom_overhead_output'), closure_custom_output => $self->can('custom_overhead_output'),
perfdatas => [ perfdatas => [
{ label => 'overhead', value => 'overhead', template => '%s', unit => 'B', { label => 'overhead', template => '%s', unit => 'B',
min => 0, label_extra_instance => 1 }, min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'state-memory', nlabel => 'host.memory.state.count', set => { { label => 'state-memory', nlabel => 'host.memory.state.count', set => {
key_values => [ { name => 'mem_state' }, { name => 'mem_state_str' }, { name => 'display' } ], key_values => [ { name => 'mem_state' }, { name => 'mem_state_str' }, { name => 'display' } ],
closure_custom_output => $self->can('custom_memstate_output'), closure_custom_output => $self->can('custom_memstate_output'),
perfdatas => [ perfdatas => [
{ label => 'state', value => 'mem_state', template => '%s', { label => 'state', template => '%s',
min => 0, max => 3, label_extra_instance => 1 }, min => 0, max => 3, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -186,35 +189,27 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"units:s" => { name => 'units', default => '%' }, 'units:s' => { name => 'units', default => '%' },
"free" => { name => 'free' }, 'free' => { name => 'free' },
"no-memory-state" => { name => 'no_memory_state' }, 'no-memory-state' => { name => 'no_memory_state' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'memhost'); params => $self->{option_results},
command => 'memhost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
$self->{host}->{$host_name} = { $self->{host}->{$host_name} = {
@ -224,7 +219,7 @@ sub manage_selection {
overhead => $response->{data}->{$host_id}->{'mem.overhead.average'}, overhead => $response->{data}->{$host_id}->{'mem.overhead.average'},
mem_state => $response->{data}->{$host_id}->{mem_state}, mem_state => $response->{data}->{$host_id}->{mem_state},
mem_state_str => $response->{data}->{$host_id}->{mem_state_str}, mem_state_str => $response->{data}->{$host_id}->{mem_state_str},
total => $response->{data}->{$host_id}->{mem_size}, total => $response->{data}->{$host_id}->{mem_size}
}; };
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']'; return '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']';
return $msg;
} }
sub custom_usage_perfdata { sub custom_usage_perfdata {
@ -141,17 +140,19 @@ sub set_counters {
{ name => 'global_active', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_active', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_overhead', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_overhead', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_vmmemctl', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_vmmemctl', type => 0, skipped_code => { -10 => 1 } },
{ name => 'global_shared', type => 0, skipped_code => { -10 => 1 } }, { name => 'global_shared', type => 0, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i',
set => {
key_values => [ { name => 'connection_state' }, { name => 'power_state' } ], key_values => [ { name => 'connection_state' }, { name => 'power_state' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
} }
]; ];
@ -166,6 +167,7 @@ sub set_counters {
} }
} }
]; ];
$self->{maps_counters}->{global_active} = [ $self->{maps_counters}->{global_active} = [
{ label => 'active', nlabel => 'vm.memory.active.usage.bytes', set => { { label => 'active', nlabel => 'vm.memory.active.usage.bytes', set => {
key_values => [ { name => 'active' }, { name => 'total' } ], key_values => [ { name => 'active' }, { name => 'total' } ],
@ -176,34 +178,37 @@ sub set_counters {
} }
} }
]; ];
$self->{maps_counters}->{global_overhead} = [ $self->{maps_counters}->{global_overhead} = [
{ label => 'overhead', nlabel => 'vm.memory.overhead.bytes', set => { { label => 'overhead', nlabel => 'vm.memory.overhead.bytes', set => {
key_values => [ { name => 'overhead' } ], key_values => [ { name => 'overhead' } ],
closure_custom_output => $self->can('custom_overhead_output'), closure_custom_output => $self->can('custom_overhead_output'),
perfdatas => [ perfdatas => [
{ label => 'overhead', value => 'overhead', template => '%s', unit => 'B', { label => 'overhead', template => '%s', unit => 'B',
min => 0, label_extra_instance => 1 } min => 0, label_extra_instance => 1 }
] ]
} }
} }
]; ];
$self->{maps_counters}->{global_vmmemctl} = [ $self->{maps_counters}->{global_vmmemctl} = [
{ label => 'ballooning', nlabel => 'vm.memory.ballooning.bytes', set => { { label => 'ballooning', nlabel => 'vm.memory.ballooning.bytes', set => {
key_values => [ { name => 'vmmemctl' } ], key_values => [ { name => 'vmmemctl' } ],
closure_custom_output => $self->can('custom_ballooning_output'), closure_custom_output => $self->can('custom_ballooning_output'),
perfdatas => [ perfdatas => [
{ label => 'ballooning', value => 'vmmemctl', template => '%s', unit => 'B', { label => 'ballooning', template => '%s', unit => 'B',
min => 0, label_extra_instance => 1 } min => 0, label_extra_instance => 1 }
] ]
} }
} }
]; ];
$self->{maps_counters}->{global_shared} = [ $self->{maps_counters}->{global_shared} = [
{ label => 'shared', nlabel => 'vm.memory.shared.bytes', set => { { label => 'shared', nlabel => 'vm.memory.shared.bytes', set => {
key_values => [ { name => 'shared' } ], key_values => [ { name => 'shared' } ],
closure_custom_output => $self->can('custom_shared_output'), closure_custom_output => $self->can('custom_shared_output'),
perfdatas => [ perfdatas => [
{ label => 'shared', value => 'shared', template => '%s', unit => 'B', { label => 'shared', template => '%s', unit => 'B',
min => 0, label_extra_instance => 1 } min => 0, label_extra_instance => 1 }
] ]
} }
@ -240,30 +245,20 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'vm-hostname:s' => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
'scope-cluster:s' => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
'scope-host:s' => { name => 'scope_host' }, 'scope-host:s' => { name => 'scope_host' },
'filter-description:s' => { name => 'filter_description' }, 'filter-description:s' => { name => 'filter_description' },
'filter-os:s' => { name => 'filter_os' }, 'filter-os:s' => { name => 'filter_os' },
'filter-uuid:s' => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' },
'display-description' => { name => 'display_description' }, 'display-description' => { name => 'display_description' },
'units:s' => { name => 'units', default => '%' }, 'units:s' => { name => 'units', default => '%' },
'free' => { name => 'free' }, 'free' => { name => 'free' }
'unknown-status:s' => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i' },
'warning-status:s' => { name => 'warning_status', default => '' },
'critical-status:s' => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {
@ -281,8 +276,8 @@ sub manage_selection {
$self->{vm}->{$vm_name} = { display => $vm_name, $self->{vm}->{$vm_name} = { display => $vm_name,
global => { global => {
connection_state => $response->{data}->{$vm_id}->{connection_state}, connection_state => $response->{data}->{$vm_id}->{connection_state},
power_state => $response->{data}->{$vm_id}->{power_state}, power_state => $response->{data}->{$vm_id}->{power_state}
}, }
}; };
foreach (('consumed', 'active', 'overhead', 'vmmemctl', 'shared')) { foreach (('consumed', 'active', 'overhead', 'vmmemctl', 'shared')) {

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -116,12 +116,14 @@ sub set_counters {
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
} }
]; ];
@ -132,7 +134,7 @@ sub set_counters {
output_template => 'host traffic in : %s %s/s', output_template => 'host traffic in : %s %s/s',
output_change_bytes => 2, output_change_bytes => 2,
perfdatas => [ perfdatas => [
{ label => 'host_traffic_in', value => 'traffic_in', template => '%s', { label => 'host_traffic_in', template => '%s',
unit => 'b/s', min => 0, label_extra_instance => 1 } unit => 'b/s', min => 0, label_extra_instance => 1 }
] ]
} }
@ -142,7 +144,7 @@ sub set_counters {
output_template => 'host traffic out : %s %s/s', output_template => 'host traffic out : %s %s/s',
output_change_bytes => 2, output_change_bytes => 2,
perfdatas => [ perfdatas => [
{ label => 'host_traffic_out', value => 'traffic_out', template => '%s', { label => 'host_traffic_out', template => '%s',
unit => 'b/s', min => 0, label_extra_instance => 1 } unit => 'b/s', min => 0, label_extra_instance => 1 }
] ]
} }
@ -155,7 +157,7 @@ sub set_counters {
output_template => 'traffic in : %s %s/s', output_template => 'traffic in : %s %s/s',
output_change_bytes => 2, output_change_bytes => 2,
perfdatas => [ perfdatas => [
{ label => 'vswitch_traffic_in', value => 'traffic_in', template => '%s', { label => 'vswitch_traffic_in', template => '%s',
unit => 'b/s', min => 0, label_extra_instance => 1 }, unit => 'b/s', min => 0, label_extra_instance => 1 },
], ],
} }
@ -165,7 +167,7 @@ sub set_counters {
output_template => 'traffic out : %s %s/s', output_template => 'traffic out : %s %s/s',
output_change_bytes => 2, output_change_bytes => 2,
perfdatas => [ perfdatas => [
{ label => 'vswitch_traffic_out', value => 'traffic_out', template => '%s', { label => 'vswitch_traffic_out', template => '%s',
unit => 'b/s', min => 0, label_extra_instance => 1 } unit => 'b/s', min => 0, label_extra_instance => 1 }
] ]
} }
@ -173,12 +175,14 @@ sub set_counters {
]; ];
$self->{maps_counters}->{pnic} = [ $self->{maps_counters}->{pnic} = [
{ label => 'link-status', threshold => 0, set => { {
label => 'link-status', type => 2, critical_default => '%{link_status} !~ /up/',
set => {
key_values => [ { name => 'status' }, { name => 'display' } ], key_values => [ { name => 'status' }, { name => 'display' } ],
closure_custom_calc => $self->can('custom_linkstatus_calc'), closure_custom_calc => $self->can('custom_linkstatus_calc'),
closure_custom_output => $self->can('custom_linkstatus_output'), closure_custom_output => $self->can('custom_linkstatus_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'link-traffic-in', nlabel => 'host.traffic.in.bitsperseconds', set => { { label => 'link-traffic-in', nlabel => 'host.traffic.in.bitsperseconds', set => {
@ -258,39 +262,25 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'esx-hostname:s' => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
'nic-name:s' => { name => 'nic_name' }, 'nic-name:s' => { name => 'nic_name' },
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
'scope-cluster:s' => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
'no-proxyswitch' => { name => 'no_proxyswitch' }, 'no-proxyswitch' => { name => 'no_proxyswitch' }
'unknown-status:s' => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
'warning-status:s' => { name => 'warning_status', default => '' },
'critical-status:s' => { name => 'critical_status', default => '' },
'unknown-link-status:s' => { name => 'unknown_link_status', default => '' },
'warning-link-status:s' => { name => 'warning_link_status', default => '' },
'critical-link-status:s' => { name => 'critical_link_status', default => '%{link_status} !~ /up/' }
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => [
'unknown_status', 'warning_status', 'critical_status',
'unknown_link_status', 'warning_link_status', 'critical_link_status'
]);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'nethost'); params => $self->{option_results},
command => 'nethost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
@ -301,8 +291,8 @@ sub manage_selection {
}, },
global_host => { global_host => {
traffic_in => 0, traffic_in => 0,
traffic_out => 0, traffic_out => 0
}, }
}; };
foreach my $pnic_name (sort keys %{$response->{data}->{$host_id}->{pnic}}) { foreach my $pnic_name (sort keys %{$response->{data}->{$host_id}->{pnic}}) {
@ -319,7 +309,7 @@ sub manage_selection {
packets_in => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.packetsRx.summation'}, packets_in => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.packetsRx.summation'},
packets_out => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.packetsTx.summation'}, packets_out => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.packetsTx.summation'},
dropped_in => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.droppedRx.summation'}, dropped_in => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.droppedRx.summation'},
dropped_out => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.droppedTx.summation'}, dropped_out => $response->{data}->{$host_id}->{pnic}->{$pnic_name}->{'net.droppedTx.summation'}
}; };
next if (!defined($response->{data}->{$host_id}->{pnic}->{$pnic_name}->{speed})); next if (!defined($response->{data}->{$host_id}->{pnic}->{$pnic_name}->{speed}));

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status} . ', maintenance mode is ' . $self->{result_values}->{maintenance}; return 'status ' . $self->{result_values}->{status} . ', maintenance mode is ' . $self->{result_values}->{maintenance};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -44,8 +43,7 @@ sub custom_status_calc {
sub custom_service_output { sub custom_service_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = '[policy ' . $self->{result_values}->{policy} . '][running ' . $self->{result_values}->{running} . ']'; return '[policy ' . $self->{result_values}->{policy} . '][running ' . $self->{result_values}->{running} . ']';
return $msg;
} }
sub set_counters { sub set_counters {
@ -55,30 +53,34 @@ sub set_counters {
{ name => 'host', type => 3, cb_prefix_output => 'prefix_host_output', cb_long_output => 'host_long_output', indent_long_output => ' ', message_multiple => 'All ESX hosts are ok', { name => 'host', type => 3, cb_prefix_output => 'prefix_host_output', cb_long_output => 'host_long_output', indent_long_output => ' ', message_multiple => 'All ESX hosts are ok',
group => [ group => [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'service', cb_prefix_output => 'prefix_service_output', message_multiple => 'All services are ok', type => 1, skipped_code => { -10 => 1 } }, { name => 'service', cb_prefix_output => 'prefix_service_output', message_multiple => 'All services are ok', type => 1, skipped_code => { -10 => 1 } }
] ]
} }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i && %{maintenance} =~ /false/i',
set => {
key_values => [ { name => 'state' }, { name => 'maintenance' } ], key_values => [ { name => 'state' }, { name => 'maintenance' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
$self->{maps_counters}->{service} = [ $self->{maps_counters}->{service} = [
{ label => 'service-status', threshold => 0, set => { {
label => 'service-status', type => 2, critical_default => '%{policy} =~ /^on|automatic/i && !%{running}',
set => {
key_values => [ { name => 'display' }, { name => 'policy' }, { name => 'running' }, { name => 'key' } ], key_values => [ { name => 'display' }, { name => 'policy' }, { name => 'running' }, { name => 'key' } ],
closure_custom_output => $self->can('custom_service_output'), closure_custom_output => $self->can('custom_service_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
} }
@ -106,49 +108,38 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"filter-services:s" => { name => 'filter_services' }, 'filter-services:s' => { name => 'filter_services' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i && %{maintenance} =~ /false/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
"warning-service-status:s" => { name => 'warning_service_status', default => '' },
"critical-service-status:s" => { name => 'critical_service_status', default => '%{policy} =~ /^on|automatic/i && !%{running}' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status',
'warning_service_status', 'critical_service_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'servicehost'); params => $self->{option_results},
command => 'servicehost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
$self->{host}->{$host_name} = { display => $host_name, $self->{host}->{$host_name} = { display => $host_name,
global => { global => {
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
maintenance => $response->{data}->{$host_id}->{inMaintenanceMode}, maintenance => $response->{data}->{$host_id}->{inMaintenanceMode}
}, }
}; };
foreach (@{$response->{data}->{$host_id}->{services}}) { foreach (@{$response->{data}->{$host_id}->{services}}) {
next if (defined($self->{option_results}->{filter_services}) && $self->{option_results}->{filter_services} ne '' && next if (defined($self->{option_results}->{filter_services}) && $self->{option_results}->{filter_services} ne '' &&
$_->{key} !~ /$self->{option_results}->{filter_services}/); $_->{key} !~ /$self->{option_results}->{filter_services}/);
$self->{host}->{$host_name}->{service} = {} if (!defined($self->{host}->{$host_name}->{service})); $self->{host}->{$host_name}->{service} = {} if (!defined($self->{host}->{$host_name}->{service}));
$self->{host}->{$host_name}->{service}->{$_->{label}} = { display => $_->{label}, policy => $_->{policy}, running => $_->{running}, key => $_->{key} }; $self->{host}->{$host_name}->{service}->{$_->{label}} = { display => $_->{label}, policy => $_->{policy}, running => $_->{running}, key => $_->{key} };
} }

View File

@ -31,31 +31,29 @@ sub set_counters {
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'global', type => 0, skipped_code => { -10 => 1 } }, { name => 'global', type => 0, skipped_code => { -10 => 1 } },
{ name => 'container', type => 1, cb_prefix_output => 'prefix_container_output', message_multiple => 'All containers are ok' }, { name => 'container', type => 1, cb_prefix_output => 'prefix_container_output', message_multiple => 'All containers are ok' }
]; ];
$self->{maps_counters}->{global} = [ $self->{maps_counters}->{global} = [
{ label => 'total-requests', nlabel => 'connector.requests.total.count', set => { { label => 'total-requests', nlabel => 'connector.requests.total.count', set => {
key_values => [ { name => 'requests', diff => 1 } ], key_values => [ { name => 'requests', diff => 1 } ],
output_template => 'Total %s requests', output_template => 'Total %s requests',
perfdatas => [ perfdatas => [
{ label => 'requests', value => 'requests', template => '%s', { label => 'requests', template => '%s', min => 0, label_extra_instance => 1 }
min => 0, label_extra_instance => 1 }, ]
],
} }
}, }
]; ];
$self->{maps_counters}->{container} = [ $self->{maps_counters}->{container} = [
{ label => 'requests', nlabel => 'connector.requests.total.count', set => { { label => 'requests', nlabel => 'connector.requests.total.count', set => {
key_values => [ { name => 'requests', diff => 1 } ], key_values => [ { name => 'requests', diff => 1 } ],
output_template => '%s requests', output_template => '%s requests',
perfdatas => [ perfdatas => [
{ label => 'requests', value => 'requests', template => '%s', { label => 'requests', template => '%s', min => 0, label_extra_instance => 1 }
min => 0, label_extra_instance => 1 }, ]
],
} }
}, }
]; ];
} }
@ -69,7 +67,7 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1); my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
}); });
@ -81,8 +79,10 @@ sub manage_selection {
$self->{global} = { requests => 0 }; $self->{global} = { requests => 0 };
$self->{container} = {}; $self->{container} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'stats'); params => $self->{option_results},
command => 'stats'
);
foreach my $container_name (keys %{$response->{data}}) { foreach my $container_name (keys %{$response->{data}}) {
$self->{container}->{$container_name} = { $self->{container}->{$container_name} = {

View File

@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold catalog_status_calc); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
@ -44,7 +44,12 @@ sub set_counters {
]; ];
$self->{maps_counters}->{cluster} = [ $self->{maps_counters}->{cluster} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2,
unknown_default => '%{overall_status} =~ /gray/i || %{vsan_status} =~ /gray/i',
warning_default => '%{overall_status} =~ /yellow/i || %{vsan_status} =~ /yellow/i',
critical_default => '%{overall_status} =~ /red/i || %{vsan_status} =~ /red/i',
set => {
key_values => [ key_values => [
{ name => 'overall_status' }, { name => 'overall_status' },
{ name => 'vsan_status' }, { name => 'vsan_status' },
@ -52,10 +57,9 @@ sub set_counters {
{ name => 'drs_enabled' }, { name => 'drs_enabled' },
{ name => 'display' } { name => 'display' }
], ],
closure_custom_calc => \&catalog_status_calc,
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
} }
]; ];
@ -73,24 +77,14 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'cluster-name:s' => { name => 'cluster_name' }, 'cluster-name:s' => { name => 'cluster_name' },
'filter' => { name => 'filter' }, 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' }
'unknown-status:s' => { name => 'unknown_status', default => '%{overall_status} =~ /gray/i || %{vsan_status} =~ /gray/i' },
'warning-status:s' => { name => 'warning_status', default => '%{overall_status} =~ /yellow/i || %{vsan_status} =~ /yellow/i' },
'critical-status:s' => { name => 'critical_status', default => '%{overall_status} =~ /red/i || %{vsan_status} =~ /red/i' }
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -43,41 +42,39 @@ sub custom_status_calc {
sub custom_overall_output { sub custom_overall_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'overall status is ' . $self->{result_values}->{overall_status}; return 'overall status is ' . $self->{result_values}->{overall_status};
return $msg;
}
sub custom_overall_calc {
my ($self, %options) = @_;
$self->{result_values}->{overall_status} = $options{new_datas}->{$self->{instance} . '_overall_status'};
return 0;
} }
sub set_counters { sub set_counters {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'host', type => 1, cb_prefix_output => 'prefix_host_output', message_multiple => 'All ESX Hosts are ok' }, { name => 'host', type => 1, cb_prefix_output => 'prefix_host_output', message_multiple => 'All ESX Hosts are ok' }
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknow_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' } ], key_values => [ { name => 'state' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'overall-status', threshold => 0, set => { {
label => 'overall-status', type => 2,
unknown_default => '%{overall_status} =~ /gray/i',
warning_default => '%{overall_status} =~ /yellow/i',
critical_default => '%{overall_status} =~ /red/i',
set => {
key_values => [ { name => 'overall_status' } ], key_values => [ { name => 'overall_status' } ],
closure_custom_calc => $self->can('custom_overall_calc'),
closure_custom_output => $self->can('custom_overall_output'), closure_custom_output => $self->can('custom_overall_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
} }
@ -93,42 +90,30 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
"unknown-overall-status:s" => { name => 'unknown_overall_status', default => '%{overall_status} =~ /gray/i' },
"warning-overall-status:s" => { name => 'warning_overall_status', default => '%{overall_status} =~ /yellow/i' },
"critical-overall-status:s" => { name => 'critical_overall_status', default => '%{overall_status} =~ /red/i' },
}); });
return $self; return $self;
} }
sub check_options {
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status',
'unknown_overall_status', 'warning_overall_status', 'critical_overall_status']);
}
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'statushost'); params => $self->{option_results},
command => 'statushost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
$self->{host}->{$host_name} = { $self->{host}->{$host_name} = {
display => $host_name, display => $host_name,
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
overall_status => $response->{data}->{$host_id}->{overall_status}, overall_status => $response->{data}->{$host_id}->{overall_status}
}; };
} }
} }

View File

@ -24,52 +24,49 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{connection_state}; return 'status ' . $self->{result_values}->{connection_state};
return $msg;
} }
sub custom_overall_output { sub custom_overall_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'overall status is ' . $self->{result_values}->{overall_status}; return 'overall status is ' . $self->{result_values}->{overall_status};
return $msg;
}
sub custom_overall_calc {
my ($self, %options) = @_;
$self->{result_values}->{overall_status} = $options{new_datas}->{$self->{instance} . '_overall_status'};
return 0;
} }
sub set_counters { sub set_counters {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok' }, { name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok' }
]; ];
$self->{maps_counters}->{vm} = [ $self->{maps_counters}->{vm} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i',
set => {
key_values => [ { name => 'connection_state' } ], key_values => [ { name => 'connection_state' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'overall-status', threshold => 0, set => { {
label => 'overall-status', type => 2,
unknown_default => '%{overall_status} =~ /gray/i',
warning_default => '%{overall_status} =~ /yellow/i',
critical_default => '%{overall_status} =~ /red/i',
set => {
key_values => [ { name => 'overall_status' } ], key_values => [ { name => 'overall_status' } ],
closure_custom_calc => $self->can('custom_overall_calc'),
closure_custom_output => $self->can('custom_overall_output'), closure_custom_output => $self->can('custom_overall_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, }
]; ];
} }
@ -91,50 +88,38 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"vm-hostname:s" => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"scope-host:s" => { name => 'scope_host' }, 'scope-host:s' => { name => 'scope_host' },
"filter-description:s" => { name => 'filter_description' }, 'filter-description:s' => { name => 'filter_description' },
"filter-os:s" => { name => 'filter_os' }, 'filter-os:s' => { name => 'filter_os' },
"filter-uuid:s" => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' },
"display-description" => { name => 'display_description' }, 'display-description' => { name => 'display_description' }
"unknown-status:s" => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
"unknown-overall-status:s" => { name => 'unknown_overall_status', default => '%{overall_status} =~ /gray/i' },
"warning-overall-status:s" => { name => 'warning_overall_status', default => '%{overall_status} =~ /yellow/i' },
"critical-overall-status:s" => { name => 'critical_overall_status', default => '%{overall_status} =~ /red/i' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status',
'unknown_overall_status', 'warning_overall_status', 'critical_overall_status']);
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{vm} = {}; $self->{vm} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'statusvm'); params => $self->{option_results},
command => 'statusvm'
);
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};
$self->{vm}->{$vm_name} = { $self->{vm}->{$vm_name} = {
display => $vm_name, display => $vm_name,
connection_state => $response->{data}->{$vm_id}->{connection_state}, connection_state => $response->{data}->{$vm_id}->{connection_state},
overall_status => $response->{data}->{$vm_id}->{overall_status}, overall_status => $response->{data}->{$vm_id}->{overall_status}
}; };
if (defined($self->{option_results}->{display_description})) { if (defined($self->{option_results}->{display_description})) {
$self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'}); $self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'});
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status : ' . $self->{result_values}->{status}; return 'status : ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -48,12 +47,14 @@ sub set_counters {
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' }, { name => 'display' } ], key_values => [ { name => 'state' }, { name => 'display' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'swap-in', nlabel => 'host.swap.in.usage.bytespersecond', set => { { label => 'swap-in', nlabel => 'host.swap.in.usage.bytespersecond', set => {
@ -61,9 +62,9 @@ sub set_counters {
output_template => 'Swap In: %s %s/s', output_template => 'Swap In: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'swap_in', value => 'swap_in', template => '%s', { label => 'swap_in', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ]
} }
}, },
{ label => 'swap-out', nlabel => 'host.swap.out.usage.bytespersecond', set => { { label => 'swap-out', nlabel => 'host.swap.out.usage.bytespersecond', set => {
@ -71,11 +72,11 @@ sub set_counters {
output_template => 'Swap Out: %s %s/s', output_template => 'Swap Out: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'swap_out', value => 'swap_out', template => '%s', { label => 'swap_out', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -91,39 +92,31 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' }, 'esx-hostname:s' => { name => 'esx_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' }
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'swaphost'); params => $self->{option_results},
command => 'swaphost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
$self->{host}->{$host_name} = { $self->{host}->{$host_name} = {
display => $host_name, display => $host_name,
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
swap_in => $response->{data}->{$host_id}->{'mem.swapinRate.average'}, swap_in => $response->{data}->{$host_id}->{'mem.swapinRate.average'},
swap_out => $response->{data}->{$host_id}->{'mem.swapoutRate.average'}, swap_out => $response->{data}->{$host_id}->{'mem.swapoutRate.average'}
}; };
} }
} }

View File

@ -24,13 +24,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']'; return '[connection state ' . $self->{result_values}->{connection_state} . '][power state ' . $self->{result_values}->{power_state} . ']';
return $msg;
} }
sub set_counters { sub set_counters {
@ -39,13 +38,15 @@ sub set_counters {
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok', skipped_code => { -10 => 1 } } { name => 'vm', type => 1, cb_prefix_output => 'prefix_vm_output', message_multiple => 'All virtual machines are ok', skipped_code => { -10 => 1 } }
]; ];
$self->{maps_counters}->{vm} = [ $self->{maps_counters}->{vm} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i',
set => {
key_values => [ { name => 'connection_state' }, { name => 'power_state' } ], key_values => [ { name => 'connection_state' }, { name => 'power_state' } ],
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'swap-in', nlabel => 'vm.swap.in.usage.bytespersecond', set => { { label => 'swap-in', nlabel => 'vm.swap.in.usage.bytespersecond', set => {
@ -53,8 +54,8 @@ sub set_counters {
output_template => 'Swap In: %s %s/s', output_template => 'Swap In: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'swap_in', value => 'swap_in', template => '%s', { label => 'swap_in', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ],
} }
}, },
@ -63,11 +64,11 @@ sub set_counters {
output_template => 'Swap Out: %s %s/s', output_template => 'Swap Out: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ label => 'swap_out', value => 'swap_out', template => '%s', { label => 'swap_out', template => '%s',
unit => 'B/s', min => 0, label_extra_instance => 1 }, unit => 'B/s', min => 0, label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -89,36 +90,28 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"vm-hostname:s" => { name => 'vm_hostname' }, 'vm-hostname:s' => { name => 'vm_hostname' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' }, 'scope-cluster:s' => { name => 'scope_cluster' },
"scope-host:s" => { name => 'scope_host' }, 'scope-host:s' => { name => 'scope_host' },
"filter-description:s" => { name => 'filter_description' }, 'filter-description:s' => { name => 'filter_description' },
"filter-os:s" => { name => 'filter_os' }, 'filter-os:s' => { name => 'filter_os' },
"filter-uuid:s" => { name => 'filter_uuid' }, 'filter-uuid:s' => { name => 'filter_uuid' },
"display-description" => { name => 'display_description' }, 'display-description' => { name => 'display_description' }
"unknown-status:s" => { name => 'unknown_status', default => '%{connection_state} !~ /^connected$/i or %{power_state} !~ /^poweredOn$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
}); });
return $self;
}
sub check_options { return $self;
my ($self, %options) = @_;
$self->SUPER::check_options(%options);
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']);
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{vm} = {}; $self->{vm} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'swapvm'); params => $self->{option_results},
command => 'swapvm'
);
foreach my $vm_id (keys %{$response->{data}}) { foreach my $vm_id (keys %{$response->{data}}) {
my $vm_name = $response->{data}->{$vm_id}->{name}; my $vm_name = $response->{data}->{$vm_id}->{name};
@ -128,9 +121,9 @@ sub manage_selection {
connection_state => $response->{data}->{$vm_id}->{connection_state}, connection_state => $response->{data}->{$vm_id}->{connection_state},
power_state => $response->{data}->{$vm_id}->{power_state}, power_state => $response->{data}->{$vm_id}->{power_state},
swap_in => $response->{data}->{$vm_id}->{'mem.swapinRate.average'}, swap_in => $response->{data}->{$vm_id}->{'mem.swapinRate.average'},
swap_out => $response->{data}->{$vm_id}->{'mem.swapoutRate.average'}, swap_out => $response->{data}->{$vm_id}->{'mem.swapoutRate.average'}
}; };
if (defined($self->{option_results}->{display_description})) { if (defined($self->{option_results}->{display_description})) {
$self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'}); $self->{vm}->{$vm_name}->{config_annotation} = $options{custom}->strip_cr(value => $response->{data}->{$vm_id}->{'config.annotation'});
} }

View File

@ -25,13 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use Date::Parse; use Date::Parse;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -44,9 +43,10 @@ sub custom_status_calc {
sub custom_time_output { sub custom_time_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("time offset %d second(s) : %s", return sprintf(
$self->{result_values}->{offset}, $self->{result_values}->{date}); 'time offset %d second(s) : %s',
return $msg; $self->{result_values}->{offset}, $self->{result_values}->{date}
);
} }
sub set_counters { sub set_counters {
@ -57,23 +57,25 @@ sub set_counters {
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' }, { name => 'display' } ], key_values => [ { name => 'state' }, { name => 'display' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'time', nlabel => 'host.time.offset.seconds', set => { { label => 'time', nlabel => 'host.time.offset.seconds', set => {
key_values => [ { name => 'offset' }, { name => 'date' }, { name => 'display' } ], key_values => [ { name => 'offset' }, { name => 'date' }, { name => 'display' } ],
closure_custom_output => $self->can('custom_time_output'), closure_custom_output => $self->can('custom_time_output'),
perfdatas => [ perfdatas => [
{ label => 'offset', value => 'offset', template => '%.2f', { label => 'offset', template => '%.2f',
unit => 's', label_extra_instance => 1 }, unit => 's', label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -87,34 +89,26 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' },
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'esx-hostname:s' => { name => 'esx_hostname' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' },
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']); 'scope-cluster:s' => { name => 'scope_cluster' }
});
return $self;
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'timehost'); params => $self->{option_results},
command => 'timehost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
@ -128,7 +122,7 @@ sub manage_selection {
display => $host_name, display => $host_name,
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
offset => $offset, offset => $offset,
date => $response->{data}->{$host_id}->{current_time}, date => $response->{data}->{$host_id}->{current_time}
}; };
} }
} }

View File

@ -25,13 +25,12 @@ use base qw(centreon::plugins::templates::counter);
use strict; use strict;
use warnings; use warnings;
use Date::Parse; use Date::Parse;
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
sub custom_status_output { sub custom_status_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = 'status ' . $self->{result_values}->{status}; return 'status ' . $self->{result_values}->{status};
return $msg;
} }
sub custom_status_calc { sub custom_status_calc {
@ -44,9 +43,10 @@ sub custom_status_calc {
sub custom_time_output { sub custom_time_output {
my ($self, %options) = @_; my ($self, %options) = @_;
my $msg = sprintf("Uptime: %s day(s)", return sprintf(
int($self->{result_values}->{offset} / 60 / 60 / 24)); 'Uptime: %s day(s)',
return $msg; int($self->{result_values}->{offset} / 60 / 60 / 24)
);
} }
sub set_counters { sub set_counters {
@ -57,23 +57,25 @@ sub set_counters {
]; ];
$self->{maps_counters}->{host} = [ $self->{maps_counters}->{host} = [
{ label => 'status', threshold => 0, set => { {
label => 'status', type => 2, unknown_default => '%{status} !~ /^connected$/i',
set => {
key_values => [ { name => 'state' }, { name => 'display' } ], key_values => [ { name => 'state' }, { name => 'display' } ],
closure_custom_calc => $self->can('custom_status_calc'), closure_custom_calc => $self->can('custom_status_calc'),
closure_custom_output => $self->can('custom_status_output'), closure_custom_output => $self->can('custom_status_output'),
closure_custom_perfdata => sub { return 0; }, closure_custom_perfdata => sub { return 0; },
closure_custom_threshold_check => \&catalog_status_threshold, closure_custom_threshold_check => \&catalog_status_threshold_ng
} }
}, },
{ label => 'time', nlabel => 'host.uptime.offset.seconds', set => { { label => 'time', nlabel => 'host.uptime.offset.seconds', set => {
key_values => [ { name => 'offset' }, { name => 'date' }, { name => 'display' } ], key_values => [ { name => 'offset' }, { name => 'date' }, { name => 'display' } ],
closure_custom_output => $self->can('custom_time_output'), closure_custom_output => $self->can('custom_time_output'),
perfdatas => [ perfdatas => [
{ label => 'uptime', value => 'offset', template => '%.2f', { label => 'uptime', template => '%.2f',
unit => 's', label_extra_instance => 1 }, unit => 's', label_extra_instance => 1 }
], ]
} }
}, }
]; ];
} }
@ -87,48 +89,40 @@ sub new {
my ($class, %options) = @_; my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options); my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => {
"esx-hostname:s" => { name => 'esx_hostname' },
"filter" => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' },
"scope-cluster:s" => { name => 'scope_cluster' },
"unknown-status:s" => { name => 'unknown_status', default => '%{status} !~ /^connected$/i' },
"warning-status:s" => { name => 'warning_status', default => '' },
"critical-status:s" => { name => 'critical_status', default => '' },
});
return $self;
}
sub check_options { $options{options}->add_options(arguments => {
my ($self, %options) = @_; 'esx-hostname:s' => { name => 'esx_hostname' },
$self->SUPER::check_options(%options); 'filter' => { name => 'filter' },
'scope-datacenter:s' => { name => 'scope_datacenter' },
$self->change_macros(macros => ['unknown_status', 'warning_status', 'critical_status']); 'scope-cluster:s' => { name => 'scope_cluster' }
});
return $self;
} }
sub manage_selection { sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{host} = {}; $self->{host} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'uptimehost'); params => $self->{option_results},
command => 'uptimehost'
);
foreach my $host_id (keys %{$response->{data}}) { foreach my $host_id (keys %{$response->{data}}) {
my $host_name = $response->{data}->{$host_id}->{name}; my $host_name = $response->{data}->{$host_id}->{name};
my $offset; my $offset;
if (defined($response->{data}->{$host_id}->{boot_time})) { if (defined($response->{data}->{$host_id}->{boot_time})) {
my $timestamp = Date::Parse::str2time($response->{data}->{$host_id}->{boot_time}); my $timestamp = Date::Parse::str2time($response->{data}->{$host_id}->{boot_time});
$offset = time() - $timestamp; $offset = time() - $timestamp;
} }
$self->{host}->{$host_name} = { $self->{host}->{$host_name} = {
display => $host_name, display => $host_name,
state => $response->{data}->{$host_id}->{state}, state => $response->{data}->{$host_id}->{state},
offset => $offset, offset => $offset,
date => $response->{data}->{$host_id}->{boot_time}, date => $response->{data}->{$host_id}->{boot_time}
}; };
} }
} }

View File

@ -35,32 +35,29 @@ sub set_counters {
$self->{maps_counters}->{cluster} = [ $self->{maps_counters}->{cluster} = [
{ label => 'svmotion', nlabel => 'cluster.operations.svmotion.current.count', set => { { label => 'svmotion', nlabel => 'cluster.operations.svmotion.current.count', set => {
key_values => [ { name => 'numSVMotion', diff => 1 }, { name => 'display' } ], key_values => [ { name => 'numSVMotion', diff => 1 }, { name => 'display' } ],
output_template => 'SVMotion %s', output_template => 'SVMotion %s',
perfdatas => [ perfdatas => [
{ label => 'svmotion', value => 'numSVMotion', template => '%s', { label => 'svmotion', template => '%s', min => 0, label_extra_instance => 1 }
label_extra_instance => 1 }, ]
],
} }
}, },
{ label => 'vmotion', nlabel => 'cluster.operations.vmotion.current.count', set => { { label => 'vmotion', nlabel => 'cluster.operations.vmotion.current.count', set => {
key_values => [ { name => 'numVMotion', diff => 1 }, { name => 'display' } ], key_values => [ { name => 'numVMotion', diff => 1 }, { name => 'display' } ],
output_template => 'VMotion %s', output_template => 'VMotion %s',
perfdatas => [ perfdatas => [
{ label => 'vmotion', value => 'numVMotion', template => '%s', { label => 'vmotion', template => '%s', min => 0, label_extra_instance => 1 }
label_extra_instance => 1 }, ]
],
} }
}, },
{ label => 'clone', nlabel => 'cluster.operations.clone.current.count', set => { { label => 'clone', nlabel => 'cluster.operations.clone.current.count', set => {
key_values => [ { name => 'numClone', diff => 1 }, { name => 'display' } ], key_values => [ { name => 'numClone', diff => 1 }, { name => 'display' } ],
output_template => 'Clone %s', output_template => 'Clone %s',
perfdatas => [ perfdatas => [
{ label => 'clone', value => 'numClone', template => '%s', { label => 'clone', template => '%s', min => 0, label_extra_instance => 1 }
label_extra_instance => 1 }, ]
],
} }
}, }
]; ];
} }
@ -76,9 +73,9 @@ sub new {
bless $self, $class; bless $self, $class;
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
"cluster:s" => { name => 'cluster' }, 'cluster:s' => { name => 'cluster' },
"filter" => { name => 'filter' }, 'filter' => { name => 'filter' },
"scope-datacenter:s" => { name => 'scope_datacenter' }, 'scope-datacenter:s' => { name => 'scope_datacenter' }
}); });
return $self; return $self;
@ -88,16 +85,18 @@ sub manage_selection {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{cluster} = {}; $self->{cluster} = {};
my $response = $options{custom}->execute(params => $self->{option_results}, my $response = $options{custom}->execute(
command => 'vmoperationcluster'); params => $self->{option_results},
command => 'vmoperationcluster'
);
foreach my $cluster_id (keys %{$response->{data}}) { foreach my $cluster_id (keys %{$response->{data}}) {
my $cluster_name = $response->{data}->{$cluster_id}->{name}; my $cluster_name = $response->{data}->{$cluster_id}->{name};
$self->{cluster}->{$cluster_name} = { $self->{cluster}->{$cluster_name} = {
display => $cluster_name, display => $cluster_name,
numVMotion => $response->{data}->{$cluster_id}->{'vmop.numVMotion.latest'}, numVMotion => $response->{data}->{$cluster_id}->{'vmop.numVMotion.latest'},
numClone => $response->{data}->{$cluster_id}->{'vmop.numClone.latest'}, numClone => $response->{data}->{$cluster_id}->{'vmop.numClone.latest'},
numSVMotion => $response->{data}->{$cluster_id}->{'vmop.numSVMotion.latest'}, numSVMotion => $response->{data}->{$cluster_id}->{'vmop.numSVMotion.latest'}
}; };
} }

View File

@ -29,7 +29,7 @@ sub set_counters {
my ($self, %options) = @_; my ($self, %options) = @_;
$self->{maps_counters_type} = [ $self->{maps_counters_type} = [
{ name => 'cluster', type => 1, cb_prefix_output => 'prefix_cluster_output', message_multiple => 'All clusters are ok' }, { name => 'cluster', type => 1, cb_prefix_output => 'prefix_cluster_output', message_multiple => 'All clusters are ok' }
]; ];
$self->{maps_counters}->{cluster} = [ $self->{maps_counters}->{cluster} = [
@ -37,32 +37,32 @@ sub set_counters {
key_values => [ { name => 'iopsRead' } ], key_values => [ { name => 'iopsRead' } ],
output_template => 'read IOPS: %s', output_template => 'read IOPS: %s',
perfdatas => [ perfdatas => [
{ value => 'iopsRead', template => '%s', unit => 'iops', min => 0 }, { template => '%s', unit => 'iops', min => 0 }
], ]
} }
}, },
{ label => 'backend-write-usage', nlabel => 'cluster.vsan.backend.write.usage.iops', set => { { label => 'backend-write-usage', nlabel => 'cluster.vsan.backend.write.usage.iops', set => {
key_values => [ { name => 'iopsWrite' } ], key_values => [ { name => 'iopsWrite' } ],
output_template => 'write IOPS: %s', output_template => 'write IOPS: %s',
perfdatas => [ perfdatas => [
{ value => 'iopsWrite', template => '%s', unit => 'iops', min => 0 }, { template => '%s', unit => 'iops', min => 0 }
], ]
} }
}, },
{ label => 'backend-congestions', nlabel => 'cluster.vsan.backend.congestions.count', set => { { label => 'backend-congestions', nlabel => 'cluster.vsan.backend.congestions.count', set => {
key_values => [ { name => 'congestion' } ], key_values => [ { name => 'congestion' } ],
output_template => 'congestions: %s', output_template => 'congestions: %s',
perfdatas => [ perfdatas => [
{ value => 'congestion', template => '%s', min => 0 }, { template => '%s', min => 0 }
], ]
} }
}, },
{ label => 'backend-outstanding-io', nlabel => 'cluster.vsan.backend.outstanding.io.count', set => { { label => 'backend-outstanding-io', nlabel => 'cluster.vsan.backend.outstanding.io.count', set => {
key_values => [ { name => 'oio' } ], key_values => [ { name => 'oio' } ],
output_template => 'outstanding IO: %s', output_template => 'outstanding IO: %s',
perfdatas => [ perfdatas => [
{ value => 'oio', template => '%s', min => 0 }, { template => '%s', min => 0 }
], ]
} }
}, },
{ label => 'backend-throughput-read', nlabel => 'cluster.vsan.backend.throughput.read.bytespersecond', display_ok => 0, set => { { label => 'backend-throughput-read', nlabel => 'cluster.vsan.backend.throughput.read.bytespersecond', display_ok => 0, set => {
@ -70,8 +70,8 @@ sub set_counters {
output_template => 'read throughput: %s %s/s', output_template => 'read throughput: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ value => 'throughputRead', template => '%s', unit => 'B/s', min => 0 }, { template => '%s', unit => 'B/s', min => 0 }
], ]
} }
}, },
{ label => 'backend-throughput-write', nlabel => 'cluster.vsan.backend.throughput.write.bytespersecond', display_ok => 0, set => { { label => 'backend-throughput-write', nlabel => 'cluster.vsan.backend.throughput.write.bytespersecond', display_ok => 0, set => {
@ -79,26 +79,26 @@ sub set_counters {
output_template => 'write throughput: %s %s/s', output_template => 'write throughput: %s %s/s',
output_change_bytes => 1, output_change_bytes => 1,
perfdatas => [ perfdatas => [
{ value => 'throughputWrite', template => '%s', unit => 'B/s', min => 0 }, { template => '%s', unit => 'B/s', min => 0 }
], ]
} }
}, },
{ label => 'backend-latency-read', nlabel => 'cluster.vsan.backend.latency.read.milliseconds', display_ok => 0, set => { { label => 'backend-latency-read', nlabel => 'cluster.vsan.backend.latency.read.milliseconds', display_ok => 0, set => {
key_values => [ { name => 'latencyAvgRead' } ], key_values => [ { name => 'latencyAvgRead' } ],
output_template => 'read latency: %s ms', output_template => 'read latency: %s ms',
perfdatas => [ perfdatas => [
{ value => 'latencyAvgRead', template => '%s', unit => 'ms', min => 0 }, { template => '%s', unit => 'ms', min => 0 }
], ]
} }
}, },
{ label => 'backend-latency-write', nlabel => 'cluster.vsan.backend.latency.write.milliseconds', display_ok => 0, set => { { label => 'backend-latency-write', nlabel => 'cluster.vsan.backend.latency.write.milliseconds', display_ok => 0, set => {
key_values => [ { name => 'latencyAvgWrite' } ], key_values => [ { name => 'latencyAvgWrite' } ],
output_template => 'write latency: %s ms', output_template => 'write latency: %s ms',
perfdatas => [ perfdatas => [
{ value => 'latencyAvgWrite', template => '%s', unit => 'ms', min => 0 }, { template => '%s', unit => 'ms', min => 0 }
], ]
} }
}, }
]; ];
} }

View File

@ -30,7 +30,7 @@ sub new {
bless $self, $class; bless $self, $class;
$self->{version} = '0.1'; $self->{version} = '0.1';
%{$self->{modes}} = ( $self->{modes} = {
'alarm-datacenter' => 'apps::vmware::connector::mode::alarmdatacenter', 'alarm-datacenter' => 'apps::vmware::connector::mode::alarmdatacenter',
'alarm-host' => 'apps::vmware::connector::mode::alarmhost', 'alarm-host' => 'apps::vmware::connector::mode::alarmhost',
'countvm-host' => 'apps::vmware::connector::mode::countvmhost', 'countvm-host' => 'apps::vmware::connector::mode::countvmhost',
@ -70,9 +70,9 @@ sub new {
'uptime-host' => 'apps::vmware::connector::mode::uptimehost', 'uptime-host' => 'apps::vmware::connector::mode::uptimehost',
'vmoperation-cluster' => 'apps::vmware::connector::mode::vmoperationcluster', 'vmoperation-cluster' => 'apps::vmware::connector::mode::vmoperationcluster',
'vsan-cluster-usage' => 'apps::vmware::connector::mode::vsanclusterusage', 'vsan-cluster-usage' => 'apps::vmware::connector::mode::vsanclusterusage',
); };
$self->{custom_modes}{connector} = 'apps::vmware::connector::custom::connector'; $self->{custom_modes}->{connector} = 'apps::vmware::connector::custom::connector';
return $self; return $self;
} }