Monit:满足服务测试操作条件后延迟下一个监视周期

问题描述 投票:3回答:2

当我的服务器处于高负载状态时,正常重启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,然后wait 5分钟左右,然后再次检查该特定指标。

有没有办法通过监视来做到这一点?

apache monit
2个回答
2
投票

不完全在监视范围内,但足够接近

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.正常重启apache3.启动将在5分钟内重新监视“系统”的脚本


0
投票

关于

set daemon 10

set limits { programtimeout: 300 seconds }

check system localhost
   if loadavg (1min) > 5 then exec "/bin/sh -c '/etc/init.d/apache2 graceful && sleep 5m'"

甚至

set daemon 10

check system localhost
   start program = "/bin/sh -c '/etc/init.d/apache2 graceful && sleep 5m'" with timeout 330 seconds
   if loadavg (1min) > 5 then start

即,只需在命令后添加sleep 5m shell命令以重新启动Apache并将适当的超时添加到monitrc。

© www.soinside.com 2019 - 2024. All rights reserved.