作为运维,可能会遇到甲方公司服务器为了安全,对于安装程序有严格的要求,通过代码监控性能很有必要,这篇文章主要阐述如何通过脚本来实现服务器预警。

首先实现这个功能需要服务器配置邮箱,这个是教程:https://saas.88-8.vip/yijizhichang/20231105070400554.aspx

首先需要建一个cpu.sh文件,这里以目录www/web_sh/为例创建脚本文件:

#!/bin/bash
# 硬件巡检,对cpu、内存、磁盘超过阈值报警
disk=$(df -Th | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')
mem=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
cpu=`top -b -n1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "%d", 100-v;}'`
alert_file=/www/web_sh/cpu.txt
mailbox=你的收预警邮箱@qq.com
if [ $disk -ge 75 ]
then echo "磁盘占有率超过$disk%" >> $alert_file
fi
if [ $mem -ge 80 ]
then echo "内存占有率超过$mem%" >> $alert_file
fi
if [ $cpu -ge 80 ]
then 
nps restart
echo "cpu占有率超过$cpu%" >> $alert_file
fi
if [ -f $alert_file ]
then
cat $alert_file | mail -s "121.62.19.124预警" "$mailbox"
rm -rf $alert_file
fi

其中nps restart是当cpu超过80%后进行重启nps命令,可以删除;加入这条命令的作用是在cpu超过80%时重启nps来释放CPU使用率(通过top发现近期cpu爆满主要时nps造成的)。

设置后加入定时任务。

这里以宝塔为例:

打开宝塔后进入计划任务,

添加计划任务

cd /www/web_sh 
./cpu.sh

至此监控项制作完成了。