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
原文地址:http://bywind.blog.51cto.com/7598847/1913585