+ Add a command for the connector vmware

This commit is contained in:
Quentin Garnier 2015-01-09 16:31:30 +01:00
parent ee7815eac9
commit 70899ca5b3
11 changed files with 159 additions and 1 deletions

View File

@ -172,7 +172,7 @@ sub connector_response {
my $result;
eval {
$result = JSON->new->utf8->decode($json);
$result = JSON->new->utf8->decode($json);
};
if ($@) {
$self->{output}->add_option_msg(short_msg => "Cannot decode json result: $@");

View File

@ -0,0 +1,116 @@
################################################################################
# Copyright 2005-2014 MERETHIS
# Centreon is developped by : Julien Mathis and Romain Le Merlus under
# GPL Licence 2.0.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation ; either version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, see <http://www.gnu.org/licenses>.
#
# Linking this program statically or dynamically with other modules is making a
# combined work based on this program. Thus, the terms and conditions of the GNU
# General Public License cover the whole combination.
#
# As a special exception, the copyright holders of this program give MERETHIS
# permission to link this program with independent modules to produce an executable,
# regardless of the license terms of these independent modules, and to copy and
# distribute the resulting executable under terms of MERETHIS choice, provided that
# MERETHIS also meet, for each linked independent module, the terms and conditions
# of the license of that module. An independent module is a module which is not
# derived from this program. If you modify this program, you may extend this
# exception to your version of the program, but you are not obliged to do so. If you
# do not wish to do so, delete this exception statement from your version.
#
# For more information : contact@centreon.com
# Authors : Quentin Garnier <qgarnier@merethis.com>
#
####################################################################################
package apps::vmware::connector::mode::alarmdatacenter;
use base qw(centreon::plugins::mode);
use strict;
use warnings;
sub new {
my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class;
$self->{version} = '1.0';
$options{options}->add_options(arguments =>
{
"datacenter:s" => { name => 'datacenter' },
"filter" => { name => 'filter' },
"warning:s" => { name => 'warning', },
"critical:s" => { name => 'critical', },
"filter-time:s" => { name => 'filter_time', },
});
return $self;
}
sub check_options {
my ($self, %options) = @_;
$self->SUPER::init(%options);
if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
$self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'.");
$self->{output}->option_exit();
}
if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
$self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'.");
$self->{output}->option_exit();
}
}
sub run {
my ($self, %options) = @_;
$self->{connector} = $options{custom};
$self->{connector}->add_params(params => $self->{option_results},
command => 'alarmdatacenter');
$self->{connector}->run();
}
1;
__END__
=head1 MODE
Check datacenter alarms (red an yellow).
=over 8
=item B<--datacenter>
Datacenter to check.
If not set, we check all datacenters.
=item B<--filter>
Datacenter is a regexp.
=item B<--filter-time>
Don't check alarm older (value in seconds).
=item B<--warning>
Threshold warning in number of alarms.
=item B<--critical>
Threshold critical in number of alarms.
=back
=cut

View File

@ -52,6 +52,7 @@ sub new {
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-status:s" => { name => 'nopoweredon_status', default => 'unknown' },
"display-description" => { name => 'display_description' },
"warning-usagemhz:s" => { name => 'warning_usagemhz' },
"critical-usagemhz:s" => { name => 'critical_usagemhz' },
"warning-usage:s" => { name => 'warning_usage' },
@ -121,6 +122,10 @@ Status if VM disconnected (default: 'unknown').
Status if VM is not poweredOn (default: 'unknown').
=item B<--display-description>
Display virtual machine description.
=item B<--warning-usagemhz>
Threshold warning in mhz.

View File

@ -52,6 +52,7 @@ sub new {
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-status:s" => { name => 'nopoweredon_status', default => 'unknown' },
"display-description" => { name => 'display_description' },
"warning:s" => { name => 'warning' },
"critical:s" => { name => 'critical' },
"datastore-name:s" => { name => 'datastore_name' },
@ -128,6 +129,10 @@ Status if VM disconnected (default: 'unknown').
Status if VM is not poweredOn (default: 'unknown').
=item B<--display-description>
Display virtual machine description.
=item B<--warning>
Threshold warning in IOPs.

View File

@ -55,6 +55,7 @@ sub new {
"memory-limitset-status:s" => { name => 'memory_limitset_status', default => 'critical' },
"disk-limitset-status:s" => { name => 'disk_limitset_status', default => 'critical' },
"nopoweredon-skip" => { name => 'nopoweredon_skip' },
"display-description" => { name => 'display_description' },
"check-disk-limit" => { name => 'check_disk_limit' },
});
return $self;
@ -118,6 +119,10 @@ Status if VM disconnected (default: 'unknown').
Skip check if VM is not poweredOn.
=item B<--display-description>
Display virtual machine description.
=item B<--cpu-limitset-status>
Status if cpu limit is set (default: critical).

View File

@ -52,6 +52,7 @@ sub new {
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-status:s" => { name => 'nopoweredon_status', default => 'unknown' },
"display-description" => { name => 'display_description' },
"warning:s" => { name => 'warning' },
"critical:s" => { name => 'critical' },
});
@ -117,6 +118,10 @@ Status if VM disconnected (default: 'unknown').
Status if VM is not poweredOn (default: 'unknown').
=item B<--display-description>
Display virtual machine description.
=item B<--warning>
Threshold warning for consumed memory (in percent).

View File

@ -52,6 +52,7 @@ sub new {
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-skip" => { name => 'nopoweredon_skip' },
"display-description" => { name => 'display_description' },
"check-consolidation" => { name => 'check_consolidation' },
"warning:s" => { name => 'warning' },
"critical:s" => { name => 'critical' },
@ -114,6 +115,10 @@ Status if VM disconnected (default: 'unknown').
Skip check if VM is not poweredOn.
=item B<--display-description>
Display virtual machine description.
=item B<--warning>
Threshold warning in seconds.

View File

@ -52,6 +52,7 @@ sub new {
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-status:s" => { name => 'nopoweredon_status', default => 'unknown' },
"display-description" => { name => 'display_description' },
"warning:s" => { name => 'warning' },
"critical:s" => { name => 'critical' },
});
@ -117,6 +118,10 @@ Status if VM disconnected (default: 'unknown').
Status if VM is not poweredOn (default: 'unknown').
=item B<--display-description>
Display virtual machine description.
=item B<--warning>
Threshold warning in bytes per seconds.

View File

@ -51,6 +51,8 @@ sub new {
"vm-hostname:s" => { name => 'vm_hostname' },
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"nopoweredon-skip" => { name => 'nopoweredon_skip' },
"display-description" => { name => 'display_description' },
"thinprovisioning-status:s" => { name => 'thinprovisioning_status' },
});
return $self;
@ -113,6 +115,10 @@ Status if VM disconnected (default: 'unknown').
Skip check if VM is not poweredOn.
=item B<--display-description>
Display virtual machine description.
=item B<--thinprovisioning-status>
Thinprovisioning status (default: none)

View File

@ -51,6 +51,7 @@ sub new {
"vm-hostname:s" => { name => 'vm_hostname' },
"filter" => { name => 'filter' },
"disconnect-status:s" => { name => 'disconnect_status', default => 'unknown' },
"display-description" => { name => 'display_description' },
"tools-notinstalled-status:s" => { name => 'tools_notinstalled_status', default => 'critical' },
"tools-notrunning-status:s" => { name => 'tools_notrunning_status', default => 'critical' },
"tools-notup2date-status:s" => { name => 'tools_notupd2date_status', default => 'warning' },
@ -117,6 +118,10 @@ Status if VM disconnected (default: 'unknown').
Skip check if VM is not poweredOn.
=item B<--display-description>
Display virtual machine description.
=item B<--tools-notinstalled-status>
Status if vmtools is not installed (default: critical).

View File

@ -47,6 +47,7 @@ sub new {
$self->{version} = '0.1';
%{$self->{modes}} = (
'alarm-datacenter' => 'apps::vmware::connector::mode::alarmdatacenter',
'countvm-host' => 'apps::vmware::connector::mode::countvmhost',
'cpu-host' => 'apps::vmware::connector::mode::cpuhost',
'cpu-vm' => 'apps::vmware::connector::mode::cpuvm',