有时候我们要监控一些服务器,而且平率非常高,例如10秒或者20秒一次,故障后报警3次就好了。因为经常收到太多邮件觉得很烦,于是去一些shell牛逼的群问了一圈,直接被无视了,然后就自己写了一个,能力有限,将就用吧。
下面是我监控MySQL从机的脚本:
vim slave_monitor.sh
#!/bin/bash
_User=root
_Password=123456
Email_From_Addr=xxx@163.com
Email_Password="xxxx"
err_count=0
while [ 1 ]
do
Slave_IO=$(/usr/local/mysql/bin/mysql -u"$_User" -p"$_Password" -e "show slave status\G"|awk '/\<Slave_IO_Running\>/{print $2}')
Slave_SQL=$(/usr/local/mysql/bin/mysql -u"$_User" -p"$_Password" -e "show slave status\G"|awk '/\<Slave_SQL_Running\>/{print $2}')
if [ "$Slave_IO" != "Yes" -o "$Slave_SQL" != "Yes" ]
then
err_count=$[$err_count+1]
Message="Slave error"
/usr/local/sendEmail/sendEmail -f "$Email_From_Addr" -t "接收错误信息的邮箱地址" -o message-charset=utf-8 -s smtp.163.com -u "$Message" -xu "$Email_From_Addr" -xp "$Email_Password" -m "主从同步失败,请检查"
fi
sleep 30
if [ $err_count -gt 3 ];then
sleep 86400;
err_count=0
fi
done
运行:
chmod +x slave_monitor.sh
./slave_monitor.sh &