我已经让监控程序 24/7/365 全天候运行,并向电子邮件地址发送警报和向手机发送短信。
然而,我现在想在晚上停止手机短信,这样它们就不会吵醒我。
我不能直接将手机调至静音状态,因为我们随时准备为任何在紧急情况下需要我们帮助的亲戚提供帮助。
我稍后会弄清楚如何随时获取“无法重新启动服务器”的短信。
我的 monitrc 文件中有这个:
set alert [email protected]
set alert [email protected]
因此,我想通过添加类似下面的内容(在单个服务“检查进程”文件中有效)来关闭 vtext.com 警报
not every "* 23,0-6 * * *"
关于如何实现这一点,您有什么想法吗?
谢谢,罗恩
答案1
您可以在核心运营时间之外“取消监控”服务。
我工作的环境是,主系统只在一天中的部分时间运行。在工作日开始时,我们会通过 cron 启动系统和 Monit 服务。
################################################################################
# Start any core services on this machine
################################################################################
0 6 * * 1-5 $BIN/monit -g servers start all
一天结束时,我们会停止某些服务并取消监控其他服务。
################################################################################
# Shutdown Brazzers
################################################################################
01 15 * * 1-5 $BIN/monit unmonitor `/bin/hostname`
50 23 * * 0-5 $BIN/monit -g servers stop all
51 23 * * 0-5 $BIN/monit -g base stop all
52 23 * * 0-5 $BIN/monit stop all
如果您不关心实际响应警报,您可以做同样的事情,如下所示:
monit unmonitor SERVICE_NAME
当然,一个可以如果你收到太多噪音,你就会说你没有有效地监控。这需要不同的方法,但如果你要忽略它们,那么收到警报又有什么意义呢?
答案2
Monit 本身没有一个功能可以让你告诉它停止发送警报,同时仍然监控服务。我解决这个问题的方法是将确定是否应该向我发出警报的责任转移到电子邮件系统。我会这样做:
创建一个作为警报直接接收者的邮箱。
设置一个
.forward
脚本,该脚本根据一天中的时间检查是否将电子邮件转发到最终目的地。
ewwhite 的解决方案只适用于一些相当狭窄的用例,其中设置了 monit 的系统管理员同意 Monit a) 在一定时间段内不发送警报,并且 b)什么也不做关于在非预期时间发送警报的服务。因为这就是“取消监控”的意思:是的,Monit 将停止发送警报,但它也会停止对该服务执行任何操作。如果它在夜间死机,Monit 将不会重新启动它。