当事情发生时,有什么方法可以通知你;don';t〃;发生


What is a method to notify you when things "don't" happen?

我有很多不同的脚本和相当多的cron作业,它们在一天中触发不同的事情。很多时候是从外部API下载数据,或者定期运行某种类型的脚本。

然而,如果这些事情没有发生,我很难找到一个简单的方法来通知我。例如,最近,我的一台服务器上发生了一些事情,导致所有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://nagios.sourceforge.net/docs/3_0/passivechecks.html

本文展示了一个工作示例:

http://www.admin-magazine.com/Archive/2014/22/Nagios-Passive-Checks

这一切的关键是被动服务检查freshness_threshold,即如果Nagios在该时间段内没有看到新的结果,那么它将发出警报。

这些情况通常是Nagios和Munin等服务器监控工具的用途。这些工具将允许您监控服务器的运行时间,在出现异常时向您发出警报(也允许您采取行动)。

如果你有任何问题,请告诉我!

尝试在https://www.setcronjob.com/-然后你的cron独立于你的服务器运行,你可以在多个服务器上管理cron,对时间进行更细粒度的控制,等等