分别检查服务器在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的更多相关文章

  1. MSC服务器-主从检测脚本-check_server_state.sh

    说明: 发现keepalived会在凌晨自动进行主从切换,导致msc相关进程运行不稳定: 通过运行check_server_state.sh,及时终止/启动相关进程: 所有脚本使用supervisor ...

  2. 检查Mysql主从状态

    .检查MySQL主从同步状态 #!/bin/bash USER=bak PASSWD=123456 IO_SQL_STATUS=$(mysql -u$USER -p$PASSWD -e  show s ...

  3. 分布式项目中 linux 服务器 部署jar 应用脚本 deploy.sh

    在实际项目的部署中,尤其是分布式项目,有很多服务的jar包需要 部署,这里抽取出公用的 deploy的脚本 下面是不含jdk配置的 #!/bin/bash JAVA_OPTIONS_INITIAL=- ...

  4. 编译安装nrpe,配置监控mysql端口和主从状态

    1.安装插件 # tar xvf nagios-plugins-1.4.13.tar.gz # cd nagios-plugins-1.4.13 # ./configure # make && ...

  5. 脚本_监控 HTTP 服务器的状态

    #!bin/bash#功能:监控 HTTP 服务器的状态(测试返回码) #作者:liusingbon#设置变量,url 为你需要检测的目标网站的网址(IP 或域名)url=http://192.168 ...

  6. 监控 HTTP 服务器的状态(测试返回码)shell脚本

    #!/bin/bash # 监控 HTTP 服务器的状态(测试返回码) # 设置变量,url为你需要检测的目标网站的网址(IP 或域名),比如百度 url=http://http://183.232. ...

  7. python MySQL-Slave从服务器状态检测脚本

    #!/bin/bash mysql -e "show slave status\G" > mysql_status.txt array=($(egrep 'Slave_IO_ ...

  8. 如何编写LVS对Real Server的健康状态检测脚本

    简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...

  9. Linux检查服务器是否被入侵

    Linux检查服务器是否被入侵 检查root用户是否被纂改 awk -F: '$3==0{print $1}' /etc/passwd awk -F: '$3==0 {print}' /etc/pas ...

随机推荐

  1. ActiveMQ producer不断发送消息,会导致broker内存耗尽吗?

    http://activemq.apache.org/my-producer-blocks.html 回答了这个问题: ActiveMQ 5.x 支持Message Cursors,它默认把消息从内存 ...

  2. 使用Postman在Chrome下进行rest请求测试

    1.首先下载postman,我已经下载好,放在云盘里了. http://pan.baidu.com/s/1c1YoGKS 密码 dgfw 2.打开Chrome,点击更多工具->扩展程序~打开. ...

  3. php常见问题-foreach和引用造成的问题。

    结论:  foreach($arr as &$v) 类似这样的引用循环, 脚本语言需要注意,再次使用 $v时,他还指向原来的引用.会产生问题. unset($v)可以解除引用. 所以循环引用过 ...

  4. 强制ubuntu登陆用户退出

    #skill -KILL -u user1 杀死并注销user1. #skill -CONT -u user1 恢复user1. 在Windows 2003默认情况下,三个以上就远程不了,必须强制登录 ...

  5. laravel在控制器中动态创建数据表

    Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...

  6. laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据

    public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...

  7. laravel 的 intervention-image 图像处理笔记(备用)

    原文地址: http://blog.csdn.net/beyond__devil/article/details/62230610

  8. http协商缓存VS强缓存

    之前一直对浏览器缓存只能描述一个大概,深层次的原理不能描述上来:终于在前端的两次面试过程中被问倒下,为了泄恨,查阅一些资料最终对其有了一个更深入的理解,废话不多说,赶紧来看看浏览器缓存的那些事吧,有不 ...

  9. Unity中UGUI之Canvas属性解读版本一

    Canvas的基本属性 1.Canvas Scaler组件 : Canvas Scaler组件用于设置处于不同组件下Canvas画布中的元素的缩放模式. Ui Scaler Mode : 设置UI的缩 ...

  10. Ubuntu server 网络配置中遇到的问题

    Ubuntu server 网络配置中遇到的问题 图片中ip地址有可能和文字不符,请不要在意太多,知道原理即可 - 1.首先就是要配置ip地址 vim /etc/network/interfaces ...