我不知道该如何解释这一点。一旦开始拥有数十或数百台服务器,每台服务器都运行某种定期作业(主要来自 cron),就会出现一个问题,即确保(或尽可能确保)这些任务确实运行。我的意思是,如果作业失败,我会收到一封电子邮件,如果作业成功,我就不会收到任何邮件,但如果作业因某种原因没有运行,也不会收到任何邮件。当然,我可以更改它们并让它们发送“成功运行”的电子邮件,但大多数时候我都不想看到这些邮件。
基本上,我只希望在以下情况下收到通知:
- 任务运行但失败
- 任务没有在预期的时间运行。
有没有办法做到这一点?
答案1
如果您使用 cron,我假设您正在运行 UNIX/LINUX 系统,因此监控“任务未在预期时间运行”的最简单方法是远程记录到一个(?) 日志服务器,在您的 syslog.conf 中如下所示:
cron.!=info; @logserver.yourdomain.tld
然后您可以浏览这些日志以查找错误,或者只需添加一些日志解析脚本来完成这项工作。
但无论如何,总是存在日志记录中断的可能性,而您只是收不到错误消息。
答案2
我认为目前还没有人对此采取过任何措施。您可以将所有任务设置为在单个文件中记录其状态:时间戳、服务器、任务、状态、其他信息。
然后,您定期解析此文件,并在状态为失败或警告或任务具有旧时间戳时发送电子邮件。为了确保此脚本成功,即使一切正常,它也会发送电子邮件。
这样,您就不会被大量电子邮件淹没,偶尔您只会收到一封电子邮件。