监控MySQL的两种方法:一种是通过Nagios官方的check_mysql插件(还有第三方类似的check_mysqld插件,据介绍拥有check_mysql及其他功能),另一种第三方的check_mysql_health插件。
check_mysql、check_mysql_query插件使用要求MySQL库可用,可以从http://dev.mysql.com/downloads/下载对应lib库:libmysql、libmysqlclient;
如果监控系统有Redhat源可以yum安装mysql-devel和mysql-libs,
另外必须在PATH中指定mysql_config或编译时用--with-mysql=DIR指定DIR/bin/mysql_config
(之前已安装好nagios,并且libexec目录里面含有check_mysql,check_mysql_query,
如果没有就要重装nagios-plugins,在此之前要yum -y install mysql-devel mysql-libs)。
配置一个命令模板:
vim commands.cfg
#check_mysql command definition
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H $HOSTADDRESS$ -uroot -p123456
}
新建服务
[root@test2-5 objects]# vim localhost.cfg
# check_mysql service definition
define service{
use local-service
host_name localhost
service_description check_mysql
check_command check_mysql
}
检查
/opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg
重启nagios
service nagios restart
用于返回SQL查询中一张表中记录的多少条,用于验证表中是否有N条记录,如果定义好warning和critical的值时,当记录条数大与或者等于时就会告警
e.g:
在所使用的MySQL中总共有7个用户,可以通过查询系统表mysql.user得到结果
mysql> SELECT COUNT(1) FROM mysql.user;
+----------+
| COUNT(1) |
+----------+
| 7 |
+----------+
1 row in set (0.00 sec)
注意这里必须使用root用户不然是看不到mysql.user表的,定义好在所使用的MySQL数据库中最多只能有7个用户,当出现第8个用户时就发告警,就这样使用:
[root@localhost libexec]# ./check_mysql_query -H localhost -u root -p ‘123456‘ -q "SELECT COUNT(1) FROM mysql.user;" -w 8
这样当MySQL中创建了第8个用户时就会发送告警信息。
总之Nagios自带的check_mysql_query插件是用于监控如用户表或错误信息表之类的记录数较为恒定的表中记录数的,但是如果是要进一步的监控MySQL中表信息可以通过自行编写的脚本或者是官方提供的Perl脚本check_mysql_health来实现。
未配置