当服务恢复时,如何触发 Monit 事件?

当服务恢复时,如何触发 Monit 事件?

给出如下配置:

check host web1 address web1
    if failed host web1 port 80 protocol http
    then exec "/usr/local/bin/failover.sh -h web2"

我能否检测 web1 是否已从故障状态恢复,并执行“故障回复”操作?

如果我只是想检测它是否启动,那么我将在每个守护进程的几秒钟内运行一次故障转移命令,如果没有必要,我不想这样做;它会提供不必要的日志条目和警报。

答案1

感谢 Eric Pailleau他的建议这导致了一个可行的答案:

check host web1 address web1
    if failed host web1 port 80 protocol http
        then exec "/bin/bash -c '/usr/bin/test ! -f /var/tmp/web-failover && ( /usr/local/bin/failover.sh -h web2 ; touch /var/tmp/auth-failover )'"
    else if succeeded
        then exec "/bin/sh -c '/usr/local/bin/failover.sh -h web1 ; rm -f /var/tmp/web-failover)'"

很奇怪,但是如果成功调用 /bin/bash,monit 似乎不会运行该命令。我怀疑它认为它已经运行过该命令了,所以不去管它。然而,它似乎并不介意一遍又一遍地运行第一个命令!

相关内容