首页 > 解决方案 > Monit 在第一次运行 exec 命令后给出错误

问题描述

我正在运行 Monit 来监控 DigitalOcean 上的 ubuntu 服务器上的 cpu 使用情况。然后执行一些命令来启动或停止负载均衡器后面的其他服务器。

这是我的代码;

check system host_name
    if cpu usage > 50% for 5 cycles then exec "/bin/bash /var/www/start.sh"
    if cpu usage < 30% for 5 cycles then exec "/bin/bash /var/www/stop.sh"

第一次运行后,Monit 会关闭一台服务器并进入错误模式。这是日志的一部分;

[UTC Jun 6 10:08:13] info : 'host_name' Monit reloaded

[UTC Jun 6 10:08:13] 警告:'host_name' cpu 使用率为 0.5% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:10:13] 警告:'host_name' cpu 使用率为 1.6% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:12:13] 警告:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:14:13] 警告:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:16:13] 错误:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC 6 月 6 日 10:16:13] 信息:'host_name' 执行:'/bin/bash /var/www/stop.sh'

[UTC Jun 6 10:18:13] 错误:'host_name' cpu 使用率为 0.5% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:20:13] 错误:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:22:13] 错误:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:24:13] 错误:'host_name' cpu 使用率为 0.2% 匹配资源限制 [cpu 使用率 < 30.0%]

[UTC Jun 6 10:26:13] 错误:'host_name' cpu 使用率为 0.3% 匹配资源限制 [cpu 使用率 < 30.0%]

当它给出错误时,它就不再起作用了。

Bash 脚本可以正常工作。

我究竟做错了什么?

标签: bashubuntu-18.04monit

解决方案


让我们分解一下要求 Monit 做什么:

如果 cpu 使用率 < 30% 持续 5 个周期,则 exec "/bin/bash /var/www/stop.sh"

 warning : 'host_name' cpu usage of 0.5% matches resource limit [cpu usage < 30.0%]
 warning : 'host_name' cpu usage of 1.6% matches resource limit [cpu usage < 30.0%]
 warning : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]
 warning : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]

您的 cpu 使用率低于 30%,因此您收到 4条警告(但无操作)

如果 cpu 使用率 < 30% 持续5 个周期,则 exec "/bin/bash /var/www/stop.sh"

error : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]
info : 'host_name' exec: '/bin/bash /var/www/stop.sh'

我们已经到了第 5 个周期,它现在被认为是一个错误,并且 /var/www/stop.sh 正在运行

error : 'host_name' cpu usage of 0.5% matches resource limit [cpu usage < 30.0%]
error : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]
error : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]
error : 'host_name' cpu usage of 0.2% matches resource limit [cpu usage < 30.0%]
error : 'host_name' cpu usage of 0.3% matches resource limit [cpu usage < 30.0%]

由于它没有进一步的指令,它只是重复错误(因为它仍然存在)。如果你想让 monit 再次运行 stop.sh,你需要告诉它(以及多久)例如你可以做

如果 CPU 使用率 < 30% 持续 5 个周期,则 exec "/bin/bash /var/www/stop.sh" 每 5 个周期重复一次


推荐阅读