当我的服务器处于高负载状态时,正常重启Apache似乎会使事情重新得到控制。因此,我使用以下配置设置了monit:

set daemon 10
check system localhost
      if loadavg (1min) > 5 then exec "/etc/init.d/apache2 graceful"

因此,每隔10秒,我就会轮询服务器负载,当负载超过5时,我会优雅地重新启动Apache。但是,这暂时增加了负担,因此我们陷入了死亡螺旋。我想要的是让它在10秒钟后注意到负载为5或更大,并正常重启Apache,然后等待5分钟左右,然后再次检查该特定指标。

有办法做到这一点吗?

最佳答案

它不完全在监控范围内,但是足够接近

set daemon 10
check system localhost
  if loadavg (1min) > 5 then unmonitor
  if loadavg (1min) > 5 then exec "/etc/init.d/apache2 graceful"
  if loadavg (1min) > 5 then exec "python /scripts/remonitor.py"

然后,您将获得一个Python脚本,如下所示:
import time, os

time.sleep(5*60)
os.system("monit monitor system")

因此,这将:
1.监视“系统”当其负载过大时,以防止死亡螺旋
2.正常重启apache
3.启动将在5分钟内重新监控“系统”的脚本

10-08 18:56