如果服务通过 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
}