多个 monit 服务同时发生故障时发出警报

多个 monit 服务同时发生故障时发出警报

我们使用 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 脚本粘合剂才能实现这一点?

相关内容