检查服务器主从状态的脚本-check_server_state.sh
分别检查服务器在Master/Slave状态下,各项服务是否正常,否则报警;
原来使用keepalived每隔1分钟调用,由于执行结果对keepalived的weight参数有影响,所以移动到外部,使用supervisord进行管理;
运行在后台,作为守护进程;
#!/bin/bash
htname=$(hostname)
vip="10.108.144.5"
epg01="10.108.144.1"
epg02="10.108.144.2"
error_number=0
function send_warn()
{
echo "Begin to send email......"
if [ $(ip addr | grep $epg01 | wc -l) -eq 1 ];then
#EPG-01
if [ -f /sunlight/python/slt_send_mail.py ];then
if [ $(ping -w 1 -c 1 baidu.com | grep ttl | wc -l) -eq 1 ];then
python /sunlight/python/slt_send_mail.py "$1"
fi
fi
else
#EPG-02
ssh -p 2222 -i /usr/local/sunlight/sshkeys/init.pk -o StrictHostKeyChecking=no $epg01 "ping -w 1 -c 1 baidu.com"
if [ $? -eq 0 ];then
ssh -p 2222 -i /usr/local/sunlight/sshkeys/init.pk -o StrictHostKeyChecking=no $epg01 "python /sunlight/python/slt_send_mail.py \"$1\""
fi
fi
echo "Send mail end......"
}
while true
do
event_string="<p><span style='color:#FF0000'>发现运行时错误!</span></p>"
error_number=0
check_vip=$(ip addr | grep $vip | wc -l)
check_cron=$(ls -l /etc/cron.d |grep "^-" | wc -l)
check_smon=$(ps -ef | grep /usr/local/sunlight/smon | grep -v grep | wc -l)
check_route=$(ip route | grep $vip | wc -l)
check_ip_conflict=$(ps -ef | grep "check_server_ip_conflict.sh" | grep -v grep | wc -l)
#master
if [ $check_vip -eq 1 ];then
echo "[ info ] `date "+%Y%m%d %H:%M:%S"` Server is in Master State!"
echo "check cron......"
echo "$check_cron"
if [ $check_cron -lt 1 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Master状态下,/etc/cron.d/目录下定时任务文件不存在,请登录检查!</p>"
fi
echo "check smon......"
echo "$check_smon"
if [ $check_smon -ne 1 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Master状态下,smon进程不为1,请登录检查!</p>"
fi
echo "check route......"
echo "$check_route"
if [ $check_route -ne 1 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Master状态下,虚拟路由地址没有正确设置,请登录检查!</p>"
fi
echo "check_ip_conflict......"
echo "$check_ip_conflict"
if [[ $check_ip_conflict -ne 1 && $check_ip_conflict -ne 2 ]];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Master状态下,检测IP地址冲突的脚本没有正确运行,请登录检查!</p>"
fi
fi
#slave
if [ $check_vip -ne 1 ];then
echo "[ info ] `date "+%Y%m%d %H:%M:%S"` Server is in Slave State!"
echo "check cron......"
echo "$check_cron"
if [ $check_cron -gt 0 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Slave状态下,/etc/cron.d/目录下定存在定时任务文件,请登录检查!</p>"
fi
echo "check smon......"
echo "$check_smon"
if [ $check_smon -ne 1 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Slave状态下,smon进程不为1,请登录检查!</p>"
fi
echo "check route......"
echo "$check_route"
if [ $check_route -eq 1 ];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Slave状态下,存在虚拟路由地址,请登录检查!</p>"
fi
echo "check_ip_conflict......"
echo "$check_ip_conflict"
if [[ $check_ip_conflict -ne 1 && $check_ip_conflict -ne 2 ]];then
error_number=1
event_string="${event_string}<p>错误描述:服务器在Slave状态下,检测IP地址冲突的脚本没有正确运行,请登录检查!</p>"
fi
fi
event_string="${event_string}<p>消息来源:海南-三亚-亚特兰蒂斯酒店</p>"
event_string="${event_string}<p>hostname: ${htname}</p>"
if [ $error_number -eq 1 ];then
echo $event_string
send_warn "$event_string"
fi
sleep 60
done
检查服务器主从状态的脚本-check_server_state.sh的更多相关文章
- MSC服务器-主从检测脚本-check_server_state.sh
说明: 发现keepalived会在凌晨自动进行主从切换,导致msc相关进程运行不稳定: 通过运行check_server_state.sh,及时终止/启动相关进程: 所有脚本使用supervisor ...
- 检查Mysql主从状态
.检查MySQL主从同步状态 #!/bin/bash USER=bak PASSWD=123456 IO_SQL_STATUS=$(mysql -u$USER -p$PASSWD -e show s ...
- 分布式项目中 linux 服务器 部署jar 应用脚本 deploy.sh
在实际项目的部署中,尤其是分布式项目,有很多服务的jar包需要 部署,这里抽取出公用的 deploy的脚本 下面是不含jdk配置的 #!/bin/bash JAVA_OPTIONS_INITIAL=- ...
- 编译安装nrpe,配置监控mysql端口和主从状态
1.安装插件 # tar xvf nagios-plugins-1.4.13.tar.gz # cd nagios-plugins-1.4.13 # ./configure # make && ...
- 脚本_监控 HTTP 服务器的状态
#!bin/bash#功能:监控 HTTP 服务器的状态(测试返回码) #作者:liusingbon#设置变量,url 为你需要检测的目标网站的网址(IP 或域名)url=http://192.168 ...
- 监控 HTTP 服务器的状态(测试返回码)shell脚本
#!/bin/bash # 监控 HTTP 服务器的状态(测试返回码) # 设置变量,url为你需要检测的目标网站的网址(IP 或域名),比如百度 url=http://http://183.232. ...
- python MySQL-Slave从服务器状态检测脚本
#!/bin/bash mysql -e "show slave status\G" > mysql_status.txt array=($(egrep 'Slave_IO_ ...
- 如何编写LVS对Real Server的健康状态检测脚本
简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...
- Linux检查服务器是否被入侵
Linux检查服务器是否被入侵 检查root用户是否被纂改 awk -F: '$3==0{print $1}' /etc/passwd awk -F: '$3==0 {print}' /etc/pas ...
随机推荐
- sessionStorage在项目中的应用
1. 本地存储 Cookie(局限性):用户可以禁用cookie,最多只能存储4kb,cookie有过期时间的(一般我们设置的时间最长1个月,用户使用杀毒软件也可以清除我们的cookie)LocalS ...
- php企业建站源码
php企业建站源码 <?php session_start(); include "./admin/config.php"; include "./right/sq ...
- C# 中web如何定时同步数据
之前做定时器同步方法试过很多方法, 不过都有些问题 1)quartz + IIS 方式(web项目发布到IIS上,出现IIS应用池回收问题) 2)用线程Timer方式 (出现多个线程同步同个任务问题) ...
- linux下sed命令详解
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...
- 蓝桥杯—BASIC-25 回形取数
题目:回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向下.输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列.接下来m行每行 ...
- java 一些容易忽视的小点-控制语句
随机数 .Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1 if-else循环语句 如果if语句不写{},则只能作用于后面的第一条语句 switch语句 ...
- Python格式化字符 %s %d %f
格式 描述%% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号 ...
- Could not load driverClass ${driverClassName} 的解决方案
对项目进行ssm整合的过程中,发现报这个错误:Could not load driverClass ${driverClassName} 不明所以,在网上找了半天,各种答案都有,最后终于找 ...
- 【原创】<笔试题> 深圳市天软科技开发有限公司
时间:2018.03.03 上午 1.编写函数,实现字符串比较功能. 参考:http://blog.csdn.net/liubinzi123/article/details/8271683 /* * ...
- 前端基础之CSS属性
一.背景属性 <style> p { /*背景颜色*/ background-color: red; /*字体颜色*/ color: blue; /*宽度和高度*/ width: 600p ...