MySql monitoring using nagios

About :-

Mysql Check is a very good plugin for nagios . We can use this to monitor mysql health status like mysql connection time , threads connected etc.

Installation :-

wget http://labs.consol.de/wp-content/uploads/2010/12/check_mysql_health-2.1.5.tar.gz

tar -zxf check_mysql_health-2.1.5.tar.gz

cd check_mysql_health-2.1.5

./configure

make & make install

 

In Mysql Server

mysql> GRANT usage ON *.* TO ‘nagios’@’nagios-server-ip’ IDENTIFIED BY ‘pass’;

Check the connection from nagios server

$ ./check_mysql_health –hostname mysql-server  –username nagios –password pass  –mode connection-time

Can’t locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at ./check_mysql_health line 940.

BEGIN failed–compilation aborted at ./check_mysql_health line 940.

I got the above error while trying to check this plugin locally and I have fixed this using the following

$  perl -MCPAN -e shell

Can’t locate CPAN.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .).

BEGIN failed–compilation aborted.

( cpan is not present in the server , so I have installed cpan first and installed all the other modules using cpan )

$ yum install perl-CPAN

$ perl -MCPAN -e shell

$ cpan[1]> install Time::HiRes

./check_mysql_health –hostname mysql-server  –username nagios –password pass  –mode connection-time

OK – 0.46 seconds to connect as nagios | connection_time=0.4560s;1;5

( This time its worked 🙂 )

./check_mysql_health –hostname mysql-server  –username nagios –password pass  –mode threads-connected

CRITICAL – 34 client connection threads | threads_connected=34;10;20

Nagios configuration

# service ‘MySQL connection-time’

define service{

use                                   generic-service

host_name                     MYSQL-Server

service_description     MySQL connection-time

check_command          check_mysql_health!nagios!pass!connection-time!2!4

contact_groups            admins

}

# service ‘MySQL threads-connected’

define service{

use                                 generic-service

host_name                   MYSQL-Server

service_description    MySQL threads-connected

check_command   check_mysql_health!nagios!pass!threads-connected!80!100

contact_groups          admins

}

( after editing the corresponding hosts cfg file verify the nagios configuration and restart the nagios serve r)

$ nagios -v /etc/nagios/nagios.cfg

$ /etc/init.d/nagios restart

Hey you did that ..Its a fantastic nagios plugin  to monitor mysql health for high traffic DB server ‘s 😉