踏雪寻梅 发表于 2018-8-20 12:09:00

Shell告警监控系统

log=$1          //log作为一个变量,接收来自第一个参数的值  
t_s=`date +%s`      //时间戳
  
t_s2=`date -d "2 hours ago" +%s`    //两个小时前的时间戳
  
if [ ! -f /tmp/$log ]       //如果日志文件不存在
  
then
  
    echo $t_s2 > /tmp/$log      //把两个小时前的时间戳写到日志
  
    fi
  
t_s2=`tail -1 /tmp/$log|awk '{print $1}'`   //截取时间戳
  
echo $t_s>>/tmp/$log      //追加当前时间戳
  
v=$[$t_s-$t_s2]   //时间戳的时间差(以秒为单位)详情如下1
  
echo $v
  
if [ $v -gt 3600 ]//在此也就是,当过了1小时如果还是没有恢复再次发告警邮件。调用mail.py(如果没有恢复,每1小时发一次)
  
then
  
    ./mail.py$1$2$3
  
    echo "0" > /tmp/$log.txt      //生成一个新的.txt日志。用来记录告警
  
else
  
    if [ ! -f /tmp/$log.txt ]       //判断有没有这个日志文件
  
    then
  
    echo "0" > /tmp/$log.txt      //计数器
  
    fi
  
    nu=`cat /tmp/$log.txt`          //查看计数器
  
    nu2=$[$nu+1]                  //计数器+1
  
    echo $nu2>/tmp/$log.txt         //把计数器写入日志文件
  
    if [ $nu2 -gt 10 ]
  
    then
  
      ./mail.py$1 "trouble continue 10 min $2" "$3"         //代表着已经持续了10分钟了
  
      echo "0" > /tmp/$log.txt    //重新开始计数
  
    fi
  
fi


页: [1]
查看完整版本: Shell告警监控系统