vps交流

判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写?


宝塔判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写?
我用的哪吒判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写?有现成的

探针?

本帖最后由 mingxingye 于 2022-3-9 13:07 编辑

  1. mode="cpu"  #判断服务器负载方式 load负载法  cpu  CPU百分比法  只能选一个
  2. if [ "$mode" = "cpu" ];
  3. then
  4. check=80   #5秒内CPU连续超过80 重启NG【可以根据您的服务器负荷情况调整】
  5. #系统空闲时间
  6. TIME_INTERVAL=60
  7. time=$(date "+%Y-%m-%d %H:%M:%S")
  8. LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk ‘{print $2,$3,$4,$5,$6,$7,$8}’)
  9. LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk ‘{print $4}’)
  10. LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk ‘{print $1+$2+$3+$4+$5+$6+$7}’)
  11. sleep ${TIME_INTERVAL}
  12. NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk ‘{print $2,$3,$4,$5,$6,$7,$8}’)
  13. NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk ‘{print $4}’)
  14. NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk ‘{print $1+$2+$3+$4+$5+$6+$7}’)
  15. #系统空闲时间
  16. SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk ‘{print $1-$2}’`
  17. #CPU总时间
  18. TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk ‘{print $1-$2}’`
  19. load=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk ‘{printf "%.2f", 100-$1/$2*100}’`
  20. else
  21. load=$(cat /proc/loadavg | colrm 60)
  22. check=$(cat /proc/cpuinfo | grep "processor" | wc -l)
  23. fi
  24. if [[ $load >$check ]]
  25. #加上重启NGINX的命令
  26. echo -e "n$mode当前负载大于$check 重启Nginx"
  27. elif [[ $load <$check ]]
  28. then
  29. echo -e "n$mode当前负载低于$check不做任何操作"
  30. fi   

复制代码

有没有简化版的,可以用宝塔计划任务的

shuishui 发表于 2022-3-9 12:49
有没有简化版的,可以用宝塔计划任务的

后面加上重启NG的命令接入一下就可以了啊

怎麼達到? 不是只有警報,沒看到有這功能

check=99是啥意思

shuishui 发表于 2022-3-9 12:54
check=99是啥意思

判断CPU60秒内连续占用大于80%重启NGINX的shell脚本咋写? 你只需要添加上重启Nginx的命令就可以了 但是我没测试过 不过看了下没啥毛病

随手写出这么长的脚本,是个大佬