当一些计划的工作失败时,你如何监视和反应? – 一般问题

在许多项目中,我的团队遇到了一些重要组件“沉默失败”的问题。 有很多任务在幕后执行,如果某些事情(在逻辑或硬件问题上出错)在大多数情况下,负责人不会被通知(或没有立即通知)。

我知道可以解决一些问题的重量级监控工具,但是对于我们的团队而言,这些工具太复杂了,太贵了。

我感兴趣什么是你的解决scheme这样的问题。

感谢您的回应。 为了更准确,我正在寻找符合以下标准的东西:

  1. 可靠性 – 我认为像cron的MAILTO这样的解决scheme,或者如果作业脚本返回一些值,执行通知脚本不是完全可靠的(例如服务器存在一般问题)。 完全可靠的解决scheme部署在分离的环境中。

  2. 有可能立即提醒有兴趣的人(在某些情况下,电子邮件不能被视为立即处理,短信会好很多)。 当你每分钟收到一封包含相同信息的电子邮件时,防止“电子邮件雪崩”会很好。

  3. 要求尽可能less地了解设置和configuration。

  4. 当脚本执行超过一段时间时能够监视警报

  5. 警报规则从一个地方维护。

我做了一些研究,找不到任何涵盖这些标准的内容。 Nagios(或类似的工具)差不多已经足够好了,但在我看来,它们是复杂的,而不是用户友好的,需要复杂的集成。 它也需要雇用熟悉这种工具的人或花费大量的时间来掌握这些工具。

我问这样的解决scheme的主要原因是,我们在我们的软件公司解决scheme的基础上开发了一个有趣的方法,可以充分满足这样的要求(或其中大部分),并且已经在我们的项目中工作得很好。 现在我们的目标是为社区发布它,我们正在寻找一些可以做几乎相同的解决scheme来分析我们的方法的优缺点,并select发展的方向。 关于您现有解决scheme的问题以及您真正感激的事情的评论也非常欢迎。

Nagios与被动检查,然后包装您的计划作业发送一个消息(send_nsca)到您的nagios服务器,指出完成后发生了什么。 如果作业错误,那么nagios会提醒。

与你遇到的问题更相关的是,你也可以设置nagios来提醒你是否从你的cron工作中听不到太久,这样你就可以发现失败的工作。

所有自由和相当微不足道的设置。

你可以改变crontab中的命令条目来做一些事情

/ usr / local / bin / critical_job || / usr / local / bin / notify“关键作业失败”

然后当“citical_job”以非零值退出时,将运行“notify”。 最好,我会尽我所能地抓住工作本身,并在那里处理。

如果您觉得大规模的监控解决scheme不适合您的情况,则可以考虑将pipe理员电子邮件从服务器转发给某个人的实际电子邮件帐户。 您可以通过在/ etc / aliases中添加如下所示的行来完成此操作:

root: [email protected] 

其中[email protected]是某人的实际电子邮件地址。

请注意,您的服务器需要一个function正常的MTA来发送电子邮件,并且如果有任何阻止系统发送电子邮件的条件(即networking丢失/ / var上没有空格),则不会有人通知。

看看https://cronitor.io – 你可以免费监视一个cron作业。 当你的工作运行时,他们会ping Cronitor,如果Cronitor没有在适当的时候被发现,它会向你发出警报。