Nagios之监控mysql check_mysql check_mysql_query check_mysql_health

万楷
2023-12-01

Nagios之MySQL单机监控

监控MySQL的两种方法:一种是通过Nagios官方的check_mysql插件(还有第三方类似的check_mysqld插件,据介绍拥有check_mysql及其他功能),另一种第三方的check_mysql_health插件。

check_mysql

1、安装略

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)。

2、监控配置

配置一个命令模板:

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
}

3、检查配置并重启nagios

检查

/opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg

重启nagios

service nagios restart

check_mysql_query

用于返回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来实现。

 

check_mysql_health,主从监控

未配置

 

 

 

 类似资料: