当服务与 monit 匹配时执行

当服务与 monit 匹配时执行

如果服务通过 monit 运行正常,我需要运行 shell 脚本,以链接到我的其他监控系统 (nagios)。

基本上,我需要实现的是让 monit 在服务重新启动时发送警报,并在服务正常时发送另一个警报。

我尝试了以下操作,但没有任何效果:

if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"

上面的抱怨是“错误:行动率语句‘OK’中不允许零值或负值”

if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
else if succeeded for 5 cycles then exec "<send OK alert here>"

上面抱怨“else”......我相信“如果X重新启动”不支持“else”

有什么建议可以实现这个目标吗?

答案1

既然您说 monit 正在向 NAGIOS 提供信息,为什么不使用 NAGIOS 来完成繁重的工作(即决定并发送通知)?如果 monit 监视重启,它可以用来send_nsca通知 NAGIOS 已发生重启。

NAGIOS 反过来可以将其接收到被动服务中,该服务旨在在单个警报上通知,但也定义了新鲜度测试,以便如果它在一定时间内(这里是 60 分钟)没有听到任何消息,它会调用一个返回“0 OK”的脚本,因此将在重启通知后的那段时间内通知“OK”。

define service{
        use                     <standard template>
        host_name               foo
        service_description     bar        
        active_checks_enabled   0
        passive_checks_enabled  1
        check_command           no-restarts-ok
        check_freshness         1
        max_check_attempts      1
        normal_check_interval   60
        }

define command{
        command_name    no-restarts-ok
        command_line    $USER1$/check_dummy 0 OK
}

相关内容