diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm new file mode 100644 index 000000000..a72f29ec3 --- /dev/null +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm @@ -0,0 +1,89 @@ +################################################################################ +# Copyright 2005-2013 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 . +# +# 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 +# +#################################################################################### + +package hardware::server::ibm::bladecenter::snmp::mode::components::ambient; + +use strict; +use warnings; + +# In MIB 'mmblade.mib' +my $oid_temperature = '.1.3.6.1.4.1.2.3.51.2.2.1'; +my $oids = { + mm => '.1.3.6.1.4.1.2.3.51.2.2.1.1.2.0', + frontpanel => '.1.3.6.1.4.1.2.3.51.2.2.1.5.1.0', + frontpanel2 => '.1.3.6.1.4.1.2.3.51.2.2.1.5.2.0', +} + +sub load { + my (%options) = @_; + + push @{$options{request}}, { oid => $oid_temperature }; +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "Checking ambient"); + $self->{components}->{ambient} = {name => 'ambient', total => 0, skip => 0}; + return if ($self->check_exclude(section => 'ambient')); + + foreach my $temp (('mm', 'frontpanel', 'frontpanel2')) { + if (!defined($self->{results}->{$oid_temperature}->{$oids->{$temp}}) || + $self->{results}->{$oid_temperature}->{$oids->{$temp}} !~ /([0-9\.]+)/) { + $self->{output}->output_add(long_msg => sprintf("skip ambient '%s': no values", + $temp)); + next; + } + + my $value = $1; + next if ($self->check_exclude(section => 'ambient', instance => $temp)); + $self->{components}->{ambient}->{total}++; + + $self->{output}->output_add(long_msg => sprintf("ambient '%s' is %s degree centigrade.", + $temp, $value)); + my ($exit, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'ambient', instance => $temp, value => $value); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add(severity => $exit, + short_msg => sprintf("ambient '%s' is %s degree centigrade.", + $temp, $value)); + } + $self->{output}->perfdata_add(label => 'temp_' . $temp, unit => 'C', + value => $value, + warning => $warn, + critical => $crit); + } +} + +1; \ No newline at end of file diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm index 6f8b6dc44..62fdb4c51 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm @@ -107,6 +107,8 @@ sub check { $instance, $blower_state)); } + next if (!defined($ctrl_state)); + next if ($self->check_exclude(section => 'blowerctrl', instance => $instance)); next if ($ctrl_state =~ /notPresent/i && $self->absent_problem(section => 'blowerctrl', instance => $instance)); diff --git a/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm b/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm index 0e38be2b5..4ff9f5f83 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm @@ -137,7 +137,7 @@ sub check_options { $self->{output}->option_exit(); } my ($section, $regexp, $value) = ($1, $2, $3); - if ($section !~ /(blower|ambient|blade)/) { + if ($section !~ /(blower|ambient)/) { $self->{output}->add_option_msg(short_msg => "Wrong $option option '" . $val . "' (type must be: battery or temperature)."); $self->{output}->option_exit(); } @@ -322,7 +322,7 @@ If total (with skipped) is 0. (Default: 'critical' returns). Set to overload default threshold values (syntax: section,status,regexp) It used before default thresholds (order stays). -Example: --threshold-overload='powermodule,CRITICAL,^(?!(good)$)' +Example: --threshold-overload='blade,OK,unknown' =item B<--warning> @@ -332,7 +332,7 @@ Example: --warning='ambient,mm,30' --warning='ambient,frontpanel,35' =item B<--critical> Set critical threshold for temperatures (syntax: type,regexp,treshold) -Example: --critical='blower,1.speed,6000' --critical='blade,1.4Temp,30' +Example: --critical='blower,1,50' =back