有没有很好的技术来监控群集上的cron任务?
我们开始每天使用cron来启动任务。 关于检查信息的一些想法:
我想知道人们是否已经成功地将cron与其他东西分开处理,或者如果这些任务被完全整合到另一种方法中。 我倾向于#2,但我想知道更多有经验的人可能会尝试。
除了其他的答案:
我们首先使Nagios ( Icinga )更容易检查,例如,如果最后写入的时间戳大于n小时(加上您需要的任何逻辑) – 我们知道出了问题。
我常见的做法是:
除以上内容外:
有几种技术可以用来监控cronjobs。
要接收cronjob失败的警报:
您build议将信息logging到“networking感知”位置的系统听起来像系统日志 。 syslog提供了一个创build日志的简单方法,它通常pipe理诸如/ var / log / messages的文件。 您可以进行基本的自定义,例如select哪些文件接收日志消息。
系统日志可以在networking感知模式下启动。 例如,您可以对其进行configuration,以便从站可以login到主站:
[root@slave ~]# echo "hello world from slave" | logger -p local1.info [root@master ~]# tail /var/log/myapp Jun 29 13:07:01 192.168.1.2 logger: hello world from slave
对于基于Red Hat的发行版,示例configuration如下所示:
[root@slave ~]# cat /etc/syslog.conf | grep local1 local1.* @192.168.1.3 [root@master ~]# cat /etc/sysconfig/syslog | grep SYSLOGD_OPTIONS SYSLOGD_OPTIONS="-m 0 -r" [root@master ~]# cat /etc/syslog.conf | grep local local1.* /var/log/myapp
(第一个configuration行将local1。*日志通知redirect到@ 192.168.1.3(“master”)。第二个SYSLOGD_OPIONS行的-r标志打开networking支持。最后,第三个configuration行指示在master上收到的local1。*消息。成文件)。
系统日志方法更适合只logging错误/信息。 日志文件比电子邮件的可见性要低,所以除非出现问题,否则您可能不会查看日志。
如果您select使用syslog风格路由,请考虑使用syslog-ng: http : //freshmeat.net/projects/syslog-ng/ 。
当然,你可以同时使用这两种技术。 例如,syslog既有失败也有成功,只是邮寄失败。
在我写这篇文章的时候,这个问题还处在相当繁重的发展阶段,但是我build议大家看一下https://github.com/jamesrwhite/minicron 。 它的开发是为了解决你所描述的问题。 通过对运行命令的轻微修改,可以logging作业的输出和退出状态,并将数据实时发送回中央服务器,并可在作业失败时通过电子邮件,短信和PageRDuty发送警报(退出状态> 0)或者在应该的时候不执行。
免责声明:我是开发人员。
我发布了一个类似的问题StackOverflow的答案( https://stackoverflow.com/questions/21025495/system-for-monitoring-cron-jobs-and-automated-tasks )
Cronitor( https://cronitor.io )是我为此build立的工具。 基本上归结为使用http请求作为ping的跟踪信标。
然而,OP在他的评论中提到的需求之一就是在工作开始时需要被告知需要太长的时间来运行。
我也有同样的需求,发现类似的工具并不能轻易支持这种types的监控。 Cronitor通过允许您可选地触发开始事件和结束事件来解决这个问题,以便跟踪持续时间。
持续时间跟踪对我来说是必须的,因为我有一个计划每小时一个cronjob,但随着时间的推移开始超过一个小时运行。 希望你觉得它有用!
您的cron作业已经通过sysloglogging。 该数据可以使用另一个标准服务syslogd发送到中央服务器。
http://www.debuntu.org/how-to-remote-syslog-logging-on-debian-and-ubuntu/详细介绍了如何设置。
这看起来像AlertGrid的经典用例。
它不需要安装,所有您需要从这个工具中获益的方法是:
execution_time
! 如果my_job在X分钟内没有响应(在你的情况下是小时) – >发送短信给pipe理员
要么
如果execution_time> 60秒 – >发送电子邮件给感兴趣的人
其实就是这样。 您可以使用漂亮的可视化编辑器pipe理通知规则 如果有更改,您不必修改源代码或某些configuration文件。 这是集中的解决scheme,所以你可以从一个地方pipe理规则中受益。
希望这有助于某人。 有一个免费的帐户提供,所以你可以testing和使用AlertGrid,如果你有兴趣。 我是AlertGrid团队成员之一 – 随时询问你是否有一些问题。
我使用http://cronrat.com只是追加&&curl“…您的cronraturl”您的cron作业。 我喜欢的最好的function是你创build初始帐户后不需要设置任何东西。 每个警报在您使用它的一分钟后就会启动并运行。 因此,我可以使用任何自动化工具来启动我目前还不存在的工作,而不像某些需要首先设置工作的服务。
在这些精确的需求之后,我创造了Power Cron 。 我需要集中观察我的cron作业,以及不同集群成员之间的依赖关系。
我还需要比我能在日志中find的更多信息,并添加了作业分析。