Keepalive集群使用shell检测nginx是否正常运行脚本

#!/bin/bash
#Date: 15:46 2021-04-09
#Author: yang
#Email: 251535288@qq.com
#Function: Monitor nginx startup
#Version: 0.1
. /etc/init.d/functions   #加载函数库,Nginx_server等用到
GREEN='\033[32m'  #定义绿色
GREEN_END='\033[0m' #同上

TIME=$(date "+%Y-%m-%d %H:%M:%S")  #标准的时间


############### 检查nginx进程
function Nginx_PROCESS(){
  NGINX_LINE=`netstat -anput | grep nginx | wc -l`  #定义检测Nginx是否运行,通过wc命令获取行号
if [ "$NGINX_LINE" -ne 0 ]  #$NGINX_LINE结果 非0正常运行  0停止运行
   then
     echo -en "${GREEN} Nginx is running!\n${GREEN_END}"   #输出
   else
     Nginx_RUN #调用Nginx_RUN函数运行nginx
     action "$TIME    Nginx pages cannot be obtained!" /bin/false >> /var/log/nginx_process_error.log
     #输出检测失败,输出到/var/log/nginx_process_error.log日志中 【可以改成发送邮件】
fi
}

############### 检查nginx网页
function Nginx_WGET(){
  ####### wget命令参数 ##########
  #--spider     模拟爬虫的行为去访问网站,但不会下载网页
  #-q, --quiet     安静的访问,禁止输出,类似-o /dev/null功能
  #-o, --output-file=FILE     记录输出到文件
  #-T, --timeout=SECONDS     访问网站的超时时间
  #-t, --tries=NUMBER     当网站异常时重试网站的次数
wget --spider -q -o /dev/null --tries=1 -T 5 http://localhost
if [ "$?" -ne 0 ]    #如果以上wget获取本地的url值:0 成功
   then
   Nginx_RUN  #调用Nginx_RUN函数运行nginx
   action "$TIME    Nginx pages cannot be obtained!" /bin/false >> /var/log/nginx_wget_error.log
     #输出检测失败,输出到/var/log/nginx_url_error.log日志中
fi
}

############### 重新运行nginx
function Nginx_RUN(){
 nginx  #运行nginx
}
############### 停止运行Keepalived
function KEEPALIVED_STOP(){
  NGINX_LINE=`netstat -anput | grep nginx | wc -l`  #定义检测Nginx是否运行,通过wc命令获取行号
  if [ "$NGINX_LINE" == 0 ]; then
      pkill -9 keepalived   #杀掉Keepalived
  fi

}

 ############### 主函数
function main(){   #定义总函数
        Nginx_PROCESS  #调用Nginx_PROCESS函数测试nginx服务器是否正在运行
        Nginx_WGET  #调用Nginx_WGET函数测试nginx服务器是否正在运行
        KEEPALIVED_STOP  #调用KEEPALIVED_STOP函数
}
main   #结束main函数

 

posted @ 2021-04-10 10:26  08ruanjian306  阅读(417)  评论(0)    收藏  举报