首页 > 代码库 > nagios 添加自定义监控项目监控mysql数据库死锁

nagios 添加自定义监控项目监控mysql数据库死锁

nagios 添加自定义监控项目

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

系统环境:CentOS Linux release 7.2.1511 (Core)

nagios 版本: 2.15 


这里配合pt-dead-logger插件了,运行了这个插件,有死锁就会在test.deadlocks表写入死锁的信息

这里通过检测这个表是否增加了行数来发报警


nagios客户端自定义脚本:

###这里为了省事,直接把数据库的用户,密码,IP地址给写到脚本里去了,其实应该做成参数传进去的,但是我们只需要监控一个数据库,就简单一点做了

###最起码应该在这个脚本里把-u,-p,-h这几个变量的值像status_ok 那样在脚本最前面定义好的


vim  /usr/local/nagios/libexec/check_mysql_deadlock

#!/bin/bash


status_ok=0

status_critical=2

#这里的状态用2是因为我把数据库死锁这种报警级别定义为critical ,对应nagios默认的critical级别,如果用1就是warn


odls=`cat /tmp/dl.txt`

#/tmp/dl.txt里保存的是上次一死锁的个数(行数)


dls=$(mysql -utestuser -p‘yourpassword‘ -h 172.28.12.9 -e ‘select count(*) from test.deadlocks;‘ | awk ‘{t=$0}END{print $NF }‘)


if [ $dls -ne $odls ]; then

     echo $dls > /tmp/dl.txt

     echo "deadlock is CRITICAL ! total deadlocks: $dls"

     exit $status_critical

else

     echo "total deadlocks : $dls, is OK"

     exit $status_ok

fi


修改文件属性:

chmod 755 /usr/local/nagios/libexec/check_mysql_deadlock

chown nagios.nagios /usr/local/nagios/libexec/check_mysql_deadlock


客户端添加命令:

/usr/local/nagios/etc/nrpe.cfg

command[check_mysql_deadlock]=/usr/local/nagios/libexec/check_mysql_deadlock


service xinetd restart

这里nagios的客户端nrpe服务是集成进了xinetd服务器,所以这样重启,如果你们

[root@VM_12_107_centos nagios]# cat /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 172.28.12.17
}


nagios 服务器端:

172.28.12.17


在服务端测试一下刚才的脚本:

/usr/local/nagios/libexec/check_nrpe -H 172.28.12.107 -c check_mysql_deadlock

total deadlocks : 290, is OK

有返回,说明是正常工作的,这里返回的是test.deadlocks这个表里已有的死锁记录行数,只要行数不增加就OK,增加了说明有新的死锁


在服务端添加我们自定义的命令

vim /usr/local/nagios/etc/objects/commands.cfg

define command{

         command_name check_mysql_dealock

         command_line $USER1$/chech_mysql_deadlock

         }


添加监控选项,这样在我们web监控界面才能看到

vim /usr/local/nagios/etc/servers/callcenter107.cfg

define service{

        use generic-service ; Name of service template to use

        host_name pyt_callcenter107

        service_description mysql_deadlock

        check_command check_nrpe!check_mysql_deadlock

        }


service nagios restart 

重启服务之后,就有能在web监控界面看到自己定义的监控项了

这里可以看到mysql_deadlock这个监控项是在callcenter107这个主机下面的

技术分享






这里的脚本有个问题,就是第一次发现行数不对的时候,发了邮件报警,第二次检测,同一个死锁还在的时候,就会报警OK了。其实这是个错误,脚本有待完善。

本文出自 “BYWIND” 博客,请务必保留此出处http://bywind.blog.51cto.com/7598847/1913585

nagios 添加自定义监控项目监控mysql数据库死锁