我们使用 Monit 检查我们的 Web 服务器。当检查失败(或成功)时,状态页面上的相应组件将通过如下的 shell 脚本进行更新:
check host web-a-https with address web-a.company.local
if failed
port 443
protocol https
request /ping.php
content = "OK"
with ssl options {verify: enable}
then exec "/usr/local/sbin/statuspage/[COMPONENT]-partial"
ELSE IF recovered THEN EXEC "/usr/local/sbin/statuspage/[COMPONENT]-up"
现在我们遇到这样一种情况:如果 web-a-https 和 web-b-https 都发生故障,我们希望将组件状态设置为“严重中断”。
我认为这可能与依赖关系有关,并尝试这样做:
check program demo-group with path /bin/true
depends on web-a-https, web-b-https
if status == 0 then exec '/usr/local/sbin/statuspage/[COMPONENT]-up'
if status == 1 then exec '/usr/local/sbin/statuspage/[COMPONENT]-down'
我认为,只有当两个依赖项都启动并且测试(始终为真)通过时,才会监视该服务。这根本行不通,因为 web-a-https、web-b-https 的关闭事件似乎不会传播到“顶层”。
我尝试为组服务设置启动/停止命令,但这也不起作用。
有没有办法在 monit 中做到这一点,或者我必须构建一些 shell 脚本粘合剂才能实现这一点?