shell脚本监控系统负载、CPU和内存使用情况

2019-09-23 09:32:22王冬梅

swap_total=`free -m | grep Swap | awk '{print  $2}'` 
 
#当前剩余的交换分区free大小 
swap_free=`free -m | grep Swap | awk '{print  $4}'` 
 
#当前已使用的交换分区used大小 
swap_used=`free -m | grep Swap | awk '{print  $3}'` 
 
 
if (($swap_used != 0)); then 
 
#如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0 
   swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc` 
 
#设置交换分区的告警值为20%(即使用超过80%的时候告警)。 
   swap_warn=0.20 
 
#当前剩余交换分区百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 ) 
   swap_now=`expr $swap_per > $swap_warn` 
 
#如果当前交换分区使用超过80%(即剩余小于20%,上面的返回值等于0),立即发邮件告警 
  if (($swap_now == 0)); then 
    echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器内存告警"  fuquanjun@xxx.com 
  fi 
fi
# chmod a+x /scripts/swap-warning.sh

七、加入任务计划:系统负载与CPU占用率每十分钟检测一次,有告警则立即发邮件(十分钟发一次),负载与CPU检测结果邮件每天早上8点发一次。


# crontab -e
*/10 * * * *  /scripts/load-check.sh > /dev/null 2>&1
*/10 * * * *  /scripts/load-warning.sh 
0 8 * * *  /scripts/sendmail-load.sh 
 
*/10 * * * *  /scripts/cpu-check.sh 
*/10 * * * *  /scripts/cpu-warning.sh 
0 8 * * *  /scripts/sendmail-cpu.sh
 
*/10 * * * *  /scripts/free-mem.sh 
*/10 * * * *  /scripts/swap-warning.sh 
0 8 * * *  /scripts/sendmail-mem.sh
# service crond restart