2015-08-07 10:48:56 +02:00
#
2020-01-06 15:19:23 +01:00
# Copyright 2020 Centreon (http://www.centreon.com/)
2015-08-07 10:48:56 +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.
#
package database::firebird::mode::pages ;
2017-08-07 16:41:23 +02:00
use base qw( centreon::plugins::templates::counter ) ;
2015-08-07 10:48:56 +02:00
use strict ;
use warnings ;
2017-08-07 16:41:23 +02:00
use Digest::MD5 qw( md5_hex ) ;
2015-08-07 10:48:56 +02:00
2017-08-07 16:41:23 +02:00
sub set_counters {
my ( $ self , % options ) = @ _ ;
$ self - > { maps_counters_type } = [
{ name = > 'global' , type = > 0 , cb_prefix_output = > 'prefix_output' }
] ;
$ self - > { maps_counters } - > { global } = [
2019-05-06 13:22:43 +02:00
{ label = > 'reads' , nlabel = > 'pages.reads.persecond' , set = > {
2020-05-13 14:18:28 +02:00
key_values = > [ { name = > 'reads' , per_second = > 1 } ] ,
2015-08-07 10:48:56 +02:00
output_template = > 'Reads : %.2f' ,
perfdatas = > [
2020-09-18 11:30:33 +02:00
{ label = > 'reads' , template = > '%.2f' , unit = > '/s' , min = > 0 }
]
2015-08-07 10:48:56 +02:00
}
} ,
2019-05-06 13:22:43 +02:00
{ label = > 'writes' , nlabel = > 'pages.writes.persecond' , set = > {
2020-05-13 14:18:28 +02:00
key_values = > [ { name = > 'writes' , per_second = > 1 } ] ,
2015-08-07 10:48:56 +02:00
output_template = > 'Writes : %.2f' ,
perfdatas = > [
2020-09-18 11:30:33 +02:00
{ label = > 'writes' , template = > '%.2f' , unit = > '/s' , min = > 0 }
]
2015-08-07 10:48:56 +02:00
}
} ,
2019-05-06 13:22:43 +02:00
{ label = > 'fetches' , nlabel = > 'pages.fetches.persecond' , set = > {
2020-05-13 14:18:28 +02:00
key_values = > [ { name = > 'fetches' , per_second = > 1 } ] ,
2015-08-07 10:48:56 +02:00
output_template = > 'Fetches : %.2f' ,
perfdatas = > [
2020-09-18 11:30:33 +02:00
{ label = > 'fetches' , template = > '%.2f' , unit = > '/s' , min = > 0 }
]
2015-08-07 10:48:56 +02:00
}
} ,
2019-05-06 13:22:43 +02:00
{ label = > 'marks' , nlabel = > 'pages.marks.persecond' , set = > {
2020-05-13 14:18:28 +02:00
key_values = > [ { name = > 'marks' , per_second = > 1 } ] ,
2015-08-07 10:48:56 +02:00
output_template = > 'Marks : %.2f' ,
perfdatas = > [
2020-09-18 11:30:33 +02:00
{ label = > 'marks' , template = > '%.2f' , unit = > '/s' , min = > 0 }
]
2015-08-07 10:48:56 +02:00
}
2020-09-18 11:30:33 +02:00
}
2017-08-07 16:41:23 +02:00
] ;
}
sub prefix_output {
my ( $ self , % options ) = @ _ ;
return "Page " ;
}
2015-08-07 10:48:56 +02:00
sub new {
my ( $ class , % options ) = @ _ ;
2017-08-07 16:41:23 +02:00
my $ self = $ class - > SUPER:: new ( package = > __PACKAGE__ , % options , statefile = > 1 ) ;
2015-08-07 10:48:56 +02:00
bless $ self , $ class ;
2019-05-06 13:22:43 +02:00
$ options { options } - > add_options ( arguments = > { } ) ;
2015-08-07 10:48:56 +02:00
2017-08-07 16:41:23 +02:00
return $ self ;
2015-08-07 10:48:56 +02:00
}
sub manage_selection {
my ( $ self , % options ) = @ _ ;
2017-08-07 16:41:23 +02:00
$ options { sql } - > connect ( ) ;
$ options { sql } - > query ( query = > q{ SELECT MON$PAGE_READS as PAGE_READS, MON$PAGE_WRITES as PAGE_WRITES, MON$PAGE_FETCHES as PAGE_FETCHES, MON$PAGE_MARKS as PAGE_MARKS FROM MON$IO_STATS mi WHERE mi.MON$STAT_GROUP = 0 } ) ;
2020-09-18 11:30:33 +02:00
my $ row = $ options { sql } - > fetchrow_hashref ( ) ;
2015-08-07 10:48:56 +02:00
if ( ! defined ( $ row ) ) {
$ self - > { output } - > add_option_msg ( short_msg = > "Cannot get page informations" ) ;
$ self - > { output } - > option_exit ( ) ;
}
2017-08-07 16:41:23 +02:00
$ self - > { global } = { reads = > $ row - > { PAGE_READS } , writes = > $ row - > { PAGE_WRITES } ,
2015-08-07 10:48:56 +02:00
fetches = > $ row - > { PAGE_FETCHES } , marks = > $ row - > { PAGE_MARKS } } ;
2017-08-07 16:41:23 +02:00
2020-09-18 11:30:33 +02:00
$ self - > { cache_name } = 'firebird_' . $ self - > { mode } . '_' . $ options { sql } - > get_unique_id4save ( ) . '_' .
2017-08-07 16:41:23 +02:00
( defined ( $ self - > { option_results } - > { filter_counters } ) ? md5_hex ( $ self - > { option_results } - > { filter_counters } ) : md5_hex ( 'all' ) ) ;
2015-08-07 10:48:56 +02:00
}
1 ;
__END__
= head1 MODE
Check page statistics on current database .
= over 8 )
= item B <--warning-*>
Threshold warning .
Can be: 'reads' , 'writes' , 'fetches' , 'marks' .
= item B <--critical-*>
Threshold critical .
Can be: 'reads' , 'writes' , 'fetches' , 'marks' .
= back
= cut