2014-10-03 15:38:23 +02:00
#
2020-01-06 15:19:23 +01:00
# Copyright 2020 Centreon (http://www.centreon.com/)
2015-07-21 11:51:02 +02:00
#
# Centreon is a full-fledged industry-strength solution that meets
# the needs in IT infrastructure and application monitoring for
# service performance.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
2014-10-03 15:38:23 +02:00
2017-01-25 14:33:29 +01:00
package network::checkpoint::snmp::mode::components::temperature ;
2014-10-03 15:38:23 +02:00
use strict ;
use warnings ;
2014-10-06 12:00:55 +02:00
my % map_states_temperature = (
0 = > 'false' ,
1 = > 'true' ,
2 = > 'reading error' ,
2014-10-03 15:38:23 +02:00
) ;
2015-03-10 00:46:14 +01:00
my $ mapping = {
tempertureSensorName = > { oid = > '.1.3.6.1.4.1.2620.1.6.7.8.1.1.2' } ,
tempertureSensorValue = > { oid = > '.1.3.6.1.4.1.2620.1.6.7.8.1.1.3' } ,
tempertureSensorStatus = > { oid = > '.1.3.6.1.4.1.2620.1.6.7.8.1.1.6' , map = > \ % map_states_temperature } ,
} ;
my $ oid_tempertureSensorEntry = '.1.3.6.1.4.1.2620.1.6.7.8.1.1' ;
sub load {
2016-01-08 14:29:55 +01:00
my ( $ self ) = @ _ ;
2015-03-10 00:46:14 +01:00
2016-01-08 14:29:55 +01:00
push @ { $ self - > { request } } , { oid = > $ oid_tempertureSensorEntry , start = > $ mapping - > { tempertureSensorName } - > { oid } , end = > $ mapping - > { tempertureSensorStatus } - > { oid } } ;
2015-03-10 00:46:14 +01:00
}
2014-10-06 12:00:55 +02:00
2014-10-03 15:38:23 +02:00
sub check {
my ( $ self ) = @ _ ;
$ self - > { output } - > output_add ( long_msg = > "Checking temperatures" ) ;
2014-10-06 12:00:55 +02:00
$ self - > { components } - > { temperature } = { name = > 'temperatures' , total = > 0 , skip = > 0 } ;
2016-01-08 14:29:55 +01:00
return if ( $ self - > check_filter ( section = > 'temperature' ) ) ;
2014-10-03 15:38:23 +02:00
2015-03-10 00:46:14 +01:00
foreach my $ oid ( $ self - > { snmp } - > oid_lex_sort ( keys % { $ self - > { results } - > { $ oid_tempertureSensorEntry } } ) ) {
next if ( $ oid !~ /^$mapping->{tempertureSensorStatus}->{oid}\.(.*)$/ ) ;
2014-10-03 15:38:23 +02:00
my $ instance = $ 1 ;
2015-03-10 00:46:14 +01:00
my $ result = $ self - > { snmp } - > map_instance ( mapping = > $ mapping , results = > $ self - > { results } - > { $ oid_tempertureSensorEntry } , instance = > $ instance ) ;
2014-10-03 15:38:23 +02:00
2016-01-08 14:29:55 +01:00
next if ( $ self - > check_filter ( section = > 'temperature' , instance = > $ instance ) ) ;
2015-07-20 17:38:56 +02:00
next if ( $ result - > { tempertureSensorName } !~ /^[0-9a-zA-Z ]+$/ ) ; # sometimes there is some wrong values in hex
2014-10-03 15:38:23 +02:00
2014-10-06 12:00:55 +02:00
$ self - > { components } - > { temperature } - > { total } + + ;
2015-07-20 16:47:56 +02:00
$ self - > { output } - > output_add ( long_msg = > sprintf ( "Temperature '%s' sensor out of range status is '%s' [instance: %s]" ,
$ result - > { tempertureSensorName } , $ result - > { tempertureSensorStatus } , $ instance ) ) ;
2015-03-10 00:46:14 +01:00
my $ exit = $ self - > get_severity ( section = > 'temperature' , value = > $ result - > { tempertureSensorStatus } ) ;
2014-10-06 12:00:55 +02:00
if ( ! $ self - > { output } - > is_status ( value = > $ exit , compare = > 'ok' , litteral = > 1 ) ) {
$ self - > { output } - > output_add ( severity = > $ exit ,
2015-07-20 16:47:56 +02:00
short_msg = > sprintf ( "Temperature '%s/%s' sensor out of range status is '%s'" , $ result - > { tempertureSensorName } , $ instance , $ result - > { tempertureSensorStatus } ) ) ;
2014-10-03 15:38:23 +02:00
}
2015-07-20 16:47:56 +02:00
if ( defined ( $ result - > { tempertureSensorValue } ) && $ result - > { tempertureSensorValue } =~ /^[0-9\.]+$/ ) {
2019-04-17 17:09:25 +02:00
$ self - > { output } - > perfdata_add (
label = > 'temp' , unit = > 'C' ,
nlabel = > 'hardware.temperature.celsius' ,
instances = > [ $ result - > { tempertureSensorName } , $ instance ] ,
value = > sprintf ( "%.2f" , $ result - > { tempertureSensorValue } )
) ;
2015-07-20 16:47:56 +02:00
}
2014-10-03 15:38:23 +02:00
}
}
1 ;