bash - 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 脚本可以正常工作。
我究竟做错了什么?
解决方案
让我们分解一下要求 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 个周期重复一次
推荐阅读
- java - 如何在 Kotlin DSL 中动态加载 TeamCity 子项目
- html - Angular 2 SVG在使用路由器时不会加载,刷新页面,它会呈现
- ios - Xamarin.Forms 任务与目标不匹配
- python - 如何比较python中的两个字典并相应地替换值?
- acumatica - Acumatica 视图插入抱怨客户管理首选项表单上的配置数据
- database - 无论架构更改如何,都自动传输数据
- node.js - 在 Google Cloud SQL 上使用 mysql2 npm 包
- excel - excel中if语句的双重计数
- python-3.x - XGBoost 最佳迭代
- javascript - 使用 AJAX 调用获取表单时使用 AntiForgeryToken?