diff --git a/database/mysql/mode/innodbbufferpoolhitrate.pm b/database/mysql/mode/innodbbufferpoolhitrate.pm index 54d1a74cb..5c47d8f51 100644 --- a/database/mysql/mode/innodbbufferpoolhitrate.pm +++ b/database/mysql/mode/innodbbufferpoolhitrate.pm @@ -103,12 +103,16 @@ sub run { $self->{output}->output_add(severity => $exit_code, short_msg => sprintf("innodb buffer pool hitrate at %.2f%%", $prcts{'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}) ); - $self->{output}->perfdata_add(label => 'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), unit => '%', + $self->{output}->perfdata_add(label => 'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), + nlabel => 'database.bufferpool.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.average' : '.delta') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}), warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), min => 0); - $self->{output}->perfdata_add(label => 'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), unit => '%', + $self->{output}->perfdata_add(label => 'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), + nlabel => 'database.bufferpool.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.delta' : '.average') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'bufferpool_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : '')}), min => 0); } diff --git a/database/mysql/mode/longqueries.pm b/database/mysql/mode/longqueries.pm index c776d7bb1..d9eeae80b 100644 --- a/database/mysql/mode/longqueries.pm +++ b/database/mysql/mode/longqueries.pm @@ -92,6 +92,7 @@ sub run { ); $self->{output}->perfdata_add( label => 'longqueries', + nlabel => 'database.longqueries.count', value => $long_queries, warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), diff --git a/database/mysql/mode/myisamkeycachehitrate.pm b/database/mysql/mode/myisamkeycachehitrate.pm index e3b44ea47..f389ebfae 100644 --- a/database/mysql/mode/myisamkeycachehitrate.pm +++ b/database/mysql/mode/myisamkeycachehitrate.pm @@ -104,12 +104,16 @@ sub run { $self->{output}->output_add(severity => $exit_code, short_msg => sprintf("myisam keycache hitrate at %.2f%%", $prcts{'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}) ); - $self->{output}->perfdata_add(label => 'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), unit => '%', + $self->{output}->perfdata_add(label => 'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), + nlabel => 'database.keycache.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.average' : '.delta') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}), warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), min => 0); - $self->{output}->perfdata_add(label => 'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), unit => '%', + $self->{output}->perfdata_add(label => 'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), + nlabel => 'database.keycache.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.delta' : '.average') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'keycache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : '')}), min => 0); } diff --git a/database/mysql/mode/openfiles.pm b/database/mysql/mode/openfiles.pm index 0273db3b5..96ec86f5c 100644 --- a/database/mysql/mode/openfiles.pm +++ b/database/mysql/mode/openfiles.pm @@ -86,6 +86,7 @@ sub run { ); $self->{output}->perfdata_add( label => 'open_files', + nlabel => 'database.open.files.count', value => $open_files, warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning', total => $open_files_limit, cast_int => 1), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical', total => $open_files_limit, cast_int => 1), diff --git a/database/mysql/mode/opentables.pm b/database/mysql/mode/opentables.pm index e63ed07e2..0d078a073 100644 --- a/database/mysql/mode/opentables.pm +++ b/database/mysql/mode/opentables.pm @@ -85,6 +85,7 @@ sub run { short_msg => sprintf("%.2f%% of the open files limit reached (%d of max. %d)", $prct_open, $open_tables, $open_tables_limit)); $self->{output}->perfdata_add(label => 'open_tables', + nlabel => 'database.open.tables.count', value => $open_tables, warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning', total => $open_tables_limit, cast_int => 1), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical', total => $open_tables_limit, cast_int => 1), diff --git a/database/mysql/mode/qcachehitrate.pm b/database/mysql/mode/qcachehitrate.pm index ff50c7649..3a4172bb6 100644 --- a/database/mysql/mode/qcachehitrate.pm +++ b/database/mysql/mode/qcachehitrate.pm @@ -120,12 +120,16 @@ sub run { $self->{output}->output_add(severity => $exit_code, short_msg => sprintf("query cache hitrate at %.2f%%", $prcts{'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}) ); - $self->{output}->perfdata_add(label => 'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), unit => '%', + $self->{output}->perfdata_add(label => 'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now'), + nlabel => 'database.qcache.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.average' : '.delta') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '' : '_now')}), warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), min => 0); - $self->{output}->perfdata_add(label => 'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), unit => '%', + $self->{output}->perfdata_add(label => 'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : ''), + nlabel => 'database.qcache.hitrate' . ((defined($self->{option_results}->{lookback})) ? '.delta' : '.average') . '.percentage', + unit => '%', value => sprintf("%.2f", $prcts{'qcache_hitrate' . ((defined($self->{option_results}->{lookback})) ? '_now' : '')}), min => 0); } diff --git a/database/mysql/mode/slowqueries.pm b/database/mysql/mode/slowqueries.pm index 65dceffd1..936909f67 100644 --- a/database/mysql/mode/slowqueries.pm +++ b/database/mysql/mode/slowqueries.pm @@ -28,7 +28,7 @@ use centreon::plugins::statefile; sub new { my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options); + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); bless $self, $class; $options{options}->add_options(arguments => @@ -90,14 +90,13 @@ sub run { $new_datas->{$name} = $result; my $old_val = $self->{statefile_cache}->get(name => $name); if (defined($old_val) && $result >= $old_val) { - my $value = sprintf("%.2f", ($result - $old_val) / ($new_datas->{last_timestamp} - $old_timestamp)); + my $value = ($result - $old_val); my $exit_code = $self->{perfdata}->threshold_check(value => $value, threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); $self->{output}->output_add(severity => $exit_code, - short_msg => sprintf("%d slow queries in %d seconds (%.2f/sec)", - ($result - $old_val), ($new_datas->{last_timestamp} - $old_timestamp), $value) - ); - $self->{output}->perfdata_add(label => 'slow_queries_rate', + short_msg => sprintf("%d slow queries since last check.", $value); + $self->{output}->perfdata_add(label => 'slow_queries_delta', + nlabel => 'database.slowqueries.delta', value => $value, warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), @@ -120,17 +119,17 @@ __END__ =head1 MODE -Check average number of queries detected as "slow" (per seconds). +Check number of slow queries since last check. =over 8 =item B<--warning> -Threshold warning in queries per seconds. +Warning number for slow queries since last check. =item B<--critical> -Threshold critical in queries per seconds. +Critical number for slow queries since last check. =back diff --git a/database/mysql/mode/tablescount.pm b/database/mysql/mode/tablescount.pm deleted file mode 100644 index 29aeafbd3..000000000 --- a/database/mysql/mode/tablescount.pm +++ /dev/null @@ -1,117 +0,0 @@ -# -# Copyright 2022 Centreon (http://www.centreon.com/) -# -# 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::mysql::mode::tablescount; - -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; - - $options{options}->add_options(arguments => - { - "warning:s" => { name => 'warning', }, - "critical:s" => { name => 'critical', }, - "filter:s" => { name => 'filter', }, - }); - - 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) = @_; - # $options{sql} = sqlmode object - $self->{sql} = $options{sql}; - - $self->{sql}->connect(); - $self->{sql}->query(query => 'SELECT table_schema AS NAME, COUNT(*) - FROM information_schema.tables - GROUP BY table_schema'); - my $result = $self->{sql}->fetchall_arrayref(); - - $self->{output}->output_add(severity => 'OK', - short_msg => "All databases are ok."); - foreach my $row (@$result) { - next if (defined($self->{option_results}->{filter}) && - $$row[0] !~ /$self->{option_results}->{filter}/); - - my $exit_code = $self->{perfdata}->threshold_check(value => $$row[1], threshold => [ { label => 'critical', exit_litteral => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); - - my $value = $$row[1]; - $self->{output}->output_add(long_msg => sprintf("DB '" . $$row[0] . "' tables count: %s", $value)); - if (!$self->{output}->is_status(value => $exit_code, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $exit_code, - short_msg => sprintf("DB '" . $$row[0] . "' tables count: %s", $value)); - } - $self->{output}->perfdata_add(label => $$row[0] . '_tablescount', unit => '', - value => $$row[1], - warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), - critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), - min => 0); - } - - $self->{output}->display(); - $self->{output}->exit(); -} - -1; - -__END__ - -=head1 MODE - -Check MySQL tables count by db. - -=over 8 - -=item B<--warning> - -Threshold warning. - -=item B<--critical> - -Threshold critical. - -=item B<--filter> - -Filter database to checks. - -=back - -=cut diff --git a/database/mysql/mode/uptime.pm b/database/mysql/mode/uptime.pm index 114f50d71..14caa8f4b 100644 --- a/database/mysql/mode/uptime.pm +++ b/database/mysql/mode/uptime.pm @@ -79,7 +79,9 @@ sub run { $self->{output}->output_add(severity => $exit_code, short_msg => $msg); - $self->{output}->perfdata_add(label => 'uptime', unit => 's', + $self->{output}->perfdata_add(label => 'uptime', + nlabel => 'database.uptime.seconds', + unit => 's', value => $value, warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'),