我有一个由 monit 监控的服务,如果它满足以下两个不同条件之一,我想重新启动它:
- 如果内存使用率>15%
- 如果内存使用率 >5% 并且当前系统时间在凌晨 4 点到 6 点之间。
下面是处理前一种情况的 monit 配置示例:
check process myservice with pidfile /var/run/myscript.pid
start = "/bin/systemctl start myservice.service"
stop = "/bin/systemctl stop myservice.service"
if mem usage > 10% for 3 cycles then restart
还有一个配置文件可以处理后一种情况(我认为——实际上还没有测试过):
check process myservice with pidfile /var/run/myscript.pid
every "* 4-6 * * *"
start = "/bin/systemctl start myservice.service"
stop = "/bin/systemctl stop myservice.service"
if mem usage > 5% for 3 cycles then restart
但是我该如何结合这两个条件呢?
(用例背景:在正常使用情况下,预计服务的 RAM 会缓慢增加,比如每天 1%,但在实际使用服务期间,即白天,重启会造成一定程度的破坏。因此,第二种情况处理预期的服务间歇性夜间重启。第一种情况是针对意外的病理场景,其中 RAM 使用量快速增加。)