关于Linux下监控WEB服务

由于近段时间公司需要做一个关于监控服务器所运行的代码是否死掉,所以需要进行写一个监控代码,查了一些相关的文件后,最后用SHELL语言写了一个监控代码,监控代码如下,

#!/bin/sh
### ====================================================================== ###
##                                                                          ##
##  JBoss Bootstrap Script                                                  ##
##                                                                          ##
### ====================================================================== ###

. /etc/profile
. /root/.bash_profile
export PATH
export LC_ALL=zh_CN

##如果是生产环境的请修改成相对应该的地址
##src="/opt/btoss/jboss"
src="/opt/Btoss/jboss"

logsrc="/opt/btmMonitor/btmMonitor"

url="http://10.30.1.31:8081/btoss/login.html?to=/?"

   nowWeek=$(date)
   week6=六
   week7=日

#定义一个标识脚本正在执行的文件名,尽量让这个临时文件名独特
#避免与他处指定重名,可借鉴C/C++防止重复包含头文件的宏命名法

TMPFILE=$logsrc/runTest.sh.tmp

# BEGIN--检查是否有别的实例在运行,保证同时只能运行一个实例
if [ -e $TMPFILE  ]; then
    
 echo "Other instance is running!" #存在表明有一个实例在运行

        ##当前如果有一个实例在运行的情况下,判断该实例的运行时间是否超过了半小时,如果超过半小时,说明有以下可能
        ## 1:由于当前系统突然停电,导致没有删除临时文件
 ## 2:由于当前程序执行出错,没有正确删除临时文件
 ## 3:由于路径出错,在删除文件时出错。
 ##  所以需要进行以下执行程序
 echo "begin"
 if [ -f $TMPFILE ]
     then
   ##该语句用于获取当前临时文件的修改时间,由于该临时文件没有进行修改,所以修改时间 = 创建时间
     ftime=$(date -d "$(stat $TMPFILE | grep Modify|awk '{print $2" "$3}'|awk -F '.' '{print $1}')" +%s)
  ##该语句用于获取系统当前时间
     now=$(date +%s)
  ##该语句用于执行系统时间 - 文件创建时间 ,用来判断是否大于半小时
     diff=$(( $now - $ftime ))
  ##条件语句,用于判断该临时文件是否已经超过半小时。
     if [ 1800 -lt $diff ]
   then
                ##由于该文件超过了半小时,所以需要强制性的删除文件,并且记录
   rm -rf $TMPFILE
         echo "超过半小时没有删除文件,执行删除 at:`date`" >>  $logsrc/btmlog.log
     fi
 
 fi
       exit 0

else
 ##下面开始执行正式代码
 ##如果是生产环境的请修改成相对应该的地址

$(curl "$url" >/dev/null) >>  $logsrc/btmlog.log
if [ $? -eq 0 ]; then
   echo "页面反应正常 at:`date`" >> $logsrc/btmlog.log
else
   ##如果页面检测不到的话,暂停一分钟,继续检查一次.
   sleep 1m
   $(curl "$url" >/dev/null)
    if [ $? -eq 0 ]; then
      echo "页面反应正常 at:`date`" >>  $logsrc/btmlog.log
  else
     ##如果暂停一分钟后检查不到的话,就执行发短信与发邮件
            cd $logsrc
     java -classpath .:lib/jtds-1.2.jar:lib/commons-dbcp.jar:lib/commons-io-1.3.2.jar:lib/commons-lang-2.1.jar:lib/commons-logging-1.0.4.jar:lib/commons-pool.jar:lib/ibatis-2.3.4.726.jar:lib/log4j-1.2.14.jar:lib/mail.jar:lib/poi-3.6-20091214.jar:lib/jcommon-1.0.0-pre2.jar:lib/jfreechart-1.0.0-pre2.jar:lib/activation.jar:lib/dnsjava-2.0.8.jar:lib/commons-net-2.0.jar: com.monitor.SendMailMonitor&
     cd $logsrc
      java -classpath .:lib/jtds-1.2.jar:lib/commons-dbcp.jar:lib/commons-io-1.3.2.jar:lib/commons-lang-2.1.jar:lib/commons-logging-1.0.4.jar:lib/commons-pool.jar:lib/ibatis-2.3.4.726.jar:lib/log4j-1.2.14.jar:lib/mail.jar:lib/poi-3.6-20091214.jar:lib/jcommon-1.0.0-pre2.jar:lib/jfreechart-1.0.0-pre2.jar:lib/activation.jar:lib/dnsjava-2.0.8.jar:lib/commons-net-2.0.jar: com.monitor.SendMobileMonitor&
      echo "发送短信成功 at:`date`" >>  $logsrc/btmlog.log
     ##发完后。开始创建一个临时文件,请系统暂时不要执行该代码
   
       touch $TMPFILE         #监时文件若不存在,就用 touch 新建一个
          chmod 600 $TMPFILE        #把临时文件属性改为只建立者可读写
    ##创建完临时文件后,
                  ##如果是周六日的话,就暂停5分钟
                   week=$(expr substr "$nowWeek" 1 2)
     if [ "$week" = "$week7" -o "$week" = "$week6" ]; then
          sleep 5m
     else
                        ##如果是周一到周五的情况,
                        times=$(date +%H)
                         ##如果是上班时间就暂停12分钟,否则暂停6分钟
    if [ "$times" -ge "09" -a "$times" -le "20" ]; then
           sleep 12m
      else
           sleep 6m
      fi
         
     fi

    $(curl "$url" >/dev/null)
   if [ $? -eq 0 ]; then

   cd $logsrc
      java -classpath .:lib/jtds-1.2.jar:lib/commons-dbcp.jar:lib/commons-io-1.3.2.jar:lib/commons-lang-2.1.jar:lib/commons-logging-1.0.4.jar:lib/commons-pool.jar:lib/ibatis-2.3.4.726.jar:lib/log4j-1.2.14.jar:lib/mail.jar:lib/poi-3.6-20091214.jar:lib/jcommon-1.0.0-pre2.jar:lib/jfreechart-1.0.0-pre2.jar:lib/activation.jar:lib/dnsjava-2.0.8.jar:lib/commons-net-2.0.jar: com.monitor.SuccessService&
      
      echo "页面反应正常 at:`date`" >>  $logsrc/btmlog.log
     rm -rf $TMPFILE;
   else
    ##以下的##在发布正式的环境后,去掉
      echo "开始重启 at:`date`" >>  $logsrc/btmlog.log
         $src/bin/shutdown.sh -S
      sleep 5s            # 等待20秒
         $src/bin/shutdown.sh -S 
      sleep 5s            # 等待20秒
          $src/bin/shutdown.sh -S
      sleep 10s            # 等待20秒
          $src/bin/run.sh &
      sleep 3m            # 等待3分钟.
    $(curl "$url" >/dev/null)
    if [ $? -eq 0 ]; then
    cd $logsrc
       java -classpath .:lib/jtds-1.2.jar:lib/commons-dbcp.jar:lib/commons-io-1.3.2.jar:lib/commons-lang-2.1.jar:lib/commons-logging-1.0.4.jar:lib/commons-pool.jar:lib/ibatis-2.3.4.726.jar:lib/log4j-1.2.14.jar:lib/mail.jar:lib/poi-3.6-20091214.jar:lib/jcommon-1.0.0-pre2.jar:lib/jfreechart-1.0.0-pre2.jar:lib/activation.jar:lib/dnsjava-2.0.8.jar:lib/commons-net-2.0.jar: com.monitor.SuccessService&
          
    echo "正常启动 并且删除临时文件 at:`date`" >> $logsrc/btmlog.log
    rm -rf $TMPFILE;
    else
    echo "启动出错 at:`date`" >> $logsrc/btmlog.log 
    rm -rf $TMPFILE;   
    fi

  fi

   fi
 fi
       exit 0

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值