我有很多不同的脚本和不同的cron作业,全天触发不同的事情。 很多时候是从外部API下载数据或定期运行某种types的脚本。
然而,如果这些事情没有发生,我很难find一个简单的方法来通知我。 例如,最近发生在我的一台服务器上,导致所有的cron作业停止运行。 我花了几天才开始接到抱怨,说事情不正常。 你用什么方法来确保事情经常发生?
Nagios支持一种名为“被动检查”的检查。 正常情况下,Nagios使用Active Checks直接监视服务器ping或服务是否启动。 即你ping一台服务器,或每五分钟询问一次服务的状态。 如果没有响应,或者底层的nagios检查脚本报告失败,那么Nagios最终将该主机或服务标记为“Hard Down”。 然后,根据您的通知和警报规则,您将会收到警报,指出某些事情已经中断。
一些检查,如检查cronjobs已经运行有点棘手,因为你不能直接问一个cron作业,如果它运行。 我想你可以写一个脚本来拖拉你的cron日志,看看cronjob是否在特定的时间段内运行,但是会变得复杂。
但是,Nagios可以配置为“被动”检查在一段时间内由外部服务提交给Nagios的“UP”状态。 因此,不是直接通过Nagios轮询状态,而是让您的脚本向Nagios提交成功/失败状态。
所以说你有一个任务应该每24小时运行一次。 任务完成后,将直接向Nagios提交结果。 在Nagios上,你会配置一个被动检查,以确保这个结果出现在24小时的窗口内。 如果没有(例如crond
崩溃或删除了cron作业条目),那么Nagios会提醒你它没有结果。
相关的Nagios文档:
本文展示了一个工作的例子:
http://www.admin-magazine.com/Archive/2014/22/Nagios-Passive-Checks
所有这一切的关键是被动服务检查freshness_threshold
,即如果Nagios在该时间段内没有看到新的结果,则会引发警报。
这些情况通常是诸如Nagios和Munin之类的服务器监视工具所使用的。 这些工具将允许您监视服务器的正常运行时间,在发生异常情况时提醒您(并允许您采取措施)。
请让我知道,如果你有任何问题!
尝试在https://www.setcronjob.com/上设置一个帐户 – 然后你的cron可以独立于你的服务器运行,你可以在多个服务器上管理cron,获得更细致的时间控制,等等。