加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

简单监测服务器的shell脚本

发布时间:2020-12-15 16:17:01 所属栏目:安全 来源:网络整理
导读:1、编写shell脚本如下: #!/bin/bash# chkconfig: 2345 10 90 # description:监测linux服务器cpu、内存、磁盘#cpu平均负载阀值CPU_AVERAGE_LOAD=0.7#剩余的最少警告的阀值MIN_WARNING=20#超过最多警告的阀值MAX_WARNING=90#监测cpu负载monitor_cpu(){ #十五分
1、编写shell脚本如下:
#!/bin/bash
# chkconfig: 2345 10 90    
# description:监测linux服务器cpu、内存、磁盘

#cpu平均负载阀值
CPU_AVERAGE_LOAD=0.7

#剩余的最少警告的阀值
MIN_WARNING=20

#超过最多警告的阀值
MAX_WARNING=90

#监测cpu负载
monitor_cpu(){
  #十五分钟平均负载值
  load_quarter=`uptime | awk '{print $NF}'`

  #cpu内核数
  cpu_num=`grep -c 'model name' /proc/cpuinfo`

  #cpu最大负载
  cpu_load=${cpu_num}

  #报警的负载阀值
  warning=$(echo ${cpu_load} * ${CPU_AVERAGE_LOAD}|bc)
  if [ $(echo "${load_quarter} >= ${warning} "|bc) == 1 ]
  then
    #报警
    warn 'cpu负载较大,请尽快处理'
  fi
  
  #监测cpu空闲比
  cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' |cut -f 1 -d .`
  if [ ${cpu_idle} -lt ${MIN_WARNING} ]
  then
    warn 'cpu占用较高请尽快处理'
  fi

}

#监测内存
monitor_memory(){
  #总的内存
  total=`free -m |grep 'Mem'|awk '{print $2}' ` 

  #可用的内存
  available=`free -m |grep 'Mem'|awk '{print $NF}'`

  #可用内存所占比例
  rate=$(echo "scale=2;${available} / ${total} * 100"|bc)

  if [ $(echo "${rate} <= ${MIN_WARNING}"|bc) == 1 ]
  then
    warn '内存占用较大,请尽快处理'
  fi
  #监测Swap
  swap_total=`free -m|grep 'Swap'|awk '{print$2}'`
  swap_free=`free -m|grep 'Swap'|awk '{print$4}'`
  if [ ${swap_total} -gt 0 ]
  then
    swap_rate=$(echo "scale=2;${$swap_free} / ${swap_total}"|bc)
    if [ $(echo "${swap_rate} <= ${MIN_WARNING}"|bc) == 1 ]
    then
      warn '内存Swap剩余较少,请尽快处理'
    fi
  fi

}

#监测磁盘
monitor_disk(){
  #过滤第一行
  for i in `df -h |grep / |awk 'BEGIN {print 0} {print $5} END{print 0}'|cut -f 1 -d '%'`
    do
      if [ $(echo "${i} >= ${MAX_WARNING}"|bc) == 1 ]
      then
        warn '磁盘即将用完,请尽快处理'  
        break
      fi
    done
}

#报警,发送邮件
warn(){
  #发邮件
  printf "`date +%Y%m%d%H%M%S`: `/usr/local/php5/bin/php /var/www/html/tools/phpmailer/wangyi.php ${1}` n" >> /var/log/monitorlog 2>&1 
}
#执行方法
monitor_cpu
monitor_memory
monitor_disk

2、配置每小时执行一次

0 */1 * * * /var/www/shell/monitor

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读