公司为了节俭,采用一台机器安装多个mysql来同步其他mysql数据服务器,这样监控主从同步就成为问题,幸好有nagios监控
首先是mysql从库创建nagios监控脚本
[vim /usr/local/nagios/libexec/check_mysql_slave
#!/bin/bash
declare -a slave_status
slave_status=($(mysql -uroot -S $1 -e 'show slave status\G' | grep Running|awk '{print $2}'))
if [ "${slave_status[0]}" = "Yes" -a "${slave_status[1]}" = "Yes" ]
then
echo "OK -slave copy is running"
exit 0
else
echo "Critical -slave is error"
exit 2
fi
----------------------------------------------------------
添加nrpe监控内容
vim /usr/local/nagios/etc/nrpe.cfg
command[check_mysql_slave_31]=/usr/local/nagios/libexec/check_mysql_slave /tmp/mysql31.sock
command[check_mysql_slave_32]=/usr/local/nagios/libexec/check_mysql_slave /tmp/mysql32.sock
command[check_mysql_slave_33]=/usr/local/nagios/libexec/check_mysql_slave /tmp/mysql33.sock
command[check_mysql_slave_36]=/usr/local/nagios/libexec/check_mysql_slave /tmp/mysql36.sock
command[check_mysql_slave_55]=/usr/local/nagios/libexec/check_mysql_slave55 /tmp/mysql55.sock
监控服务器上自定义命令 vim /usr/local/nagios/nagiosweb/etc/objects/commands.cfg
define command{
command_name check_nrpe_lan
command_line $USER1$/check_nrpe -H
$_HOSTWANIP$ -p $_HOSTPORT$ -c$ARG1$
}
添加监控服务
more /opt/nagios/nagiosweb/etc/linuxserver/kan80.37.cfg
[root@localhost ~]# more /opt/nagios/nagiosweb/etc/linuxserver/kan80.37.cfg
define host{
use linux-server-lan
host_name kan192.168.180.37
alias kan192.168.180.37
address 192.168.180.37
_wanip 118.26.230.54
_port 56637
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description Root Partition
check_command check_nrpe_lan!check_sda1!20%!10%!/
}
# 检查远程Linux主机的登录人数
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description Current Users
check_command check_nrpe_lan!check_users
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-disk2
check_command check_nrpe_lan!check_sda2!20%!10%!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-disk3
check_command check_nrpe_lan!check_sda5!20%!10%!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-disk4
check_command check_nrpe_lan!check_sdb1!20%!10%!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-sql-slave_192.168.180.31
check_command check_nrpe_lan!check_mysql_slave_31!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-sql-slave_192.168.180.32
check_command check_nrpe_lan!check_mysql_slave_32!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-sql-slave_192.168.180.33
check_command check_nrpe_lan!check_mysql_slave_33!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-sql-slave_192.168.180.36
check_command check_nrpe_lan!check_mysql_slave_36!/
}
define service{
use generic-service ; Name of service template to use
host_name kan192.168.180.37
service_description check-sql-slave_118.26.230.55
check_command check_nrpe_lan!check_mysql_slave_55!/
}
注意标红的是自定义变量的使用,前后对照着的
监控页面如下: