我意识到,当任何cron有输出它将电子邮件输出…我想确定的是,如果我有一个脚本定于凌晨3点星期二,无论出于什么原因它要么引发错误或无法运行,我想知道…
我现在想设置一个数据库表,存储每个cron命令的最后运行时间戳,我们得到cron命令的每周报告。 或者可能存储在数据库中,当它运行和上次运行,如果有问题,它会发电子邮件给我们。
“电子邮件”将由我们的内部系统完成,我们的员工一直在login,因此不会基于cron本身。
有更好的解决scheme吗?
我认为监控系统日志将是最简单的解决scheme。
让系统日志转发到您的监控系统,然后在您的监控系统中设置警报。
我还设置了过去的自定义SNMP MIB,您可以将特定cronjob运行的最后一次的时间戳。 然后,一些外部系统可以监视该snmp MIB的时间戳超过24小时。
根据你的环境,你的解决scheme听起来不错,但是这可能有些过分(除非你需要能够长期审计这个工作的历史,在这种情况下数据库可能是有意义的)。
另一个可选的方法是简单地将你的cron作业封装在一个检查脚本中(如果cron作业退出并显示错误状态(!= 0)发送一封邮件,或者生成输出并让cron为你发送邮件)。
您的解决scheme听起来比我想要的要复杂一点。
首先检查和/或监视/var/log/cron.log (或任何您的cron日志)。 cron在logging它运行的每个命令以及错误方面做得很好。 如果你想知道发生了什么,那就是要看的地方。 如果您担心cron死亡,您可以设置一个每5分钟logging一次cron'ed心跳,如果您没有看到心跳,请发送某种警报。 如果你真的觉得你需要第二个工具来关注cron,那么可以使用perl包( Schedule::Cron )来定期检查你的心跳。 如果您担心本地机器的可靠性,也可以将日志发送到第二台机器进行监视/处理/警告/等等。
或者,您可以使用某种系统监视工具(SNMP,Nagios,Hobbit / BigSister等)来从外部监视cron进程是否正在运行。 你确实监视你的系统的健康,对吧?
虽然,如果你真的担心cron死亡,你可能要考虑重build或更换你的机器。 cron应该是相当可靠的,如果失败了,这可能是一个更大的问题的症状。
我处理了一个类似的要求:
由cron运行的脚本将其输出发送到logger命令。 logging器将系统日志消息发送到由rsyslog处理的Local4工具。 然后local4。*被发送到一个远程Syslog监听器 – 在我的情况下,一个Splunk实例。 如果事件没有在预期的时间范围内发生,Splunk会有一个保存的search引发电子邮件警报。 除了警报之外,Splunk还为我提供了一个很好的search事件历史时间表。
你的解决scheme是可行的,但它重新发明了一些你可能不需要的车轮。
首先,你应该真的有一些types的监测服务。 我倾向于使用nagios,但那里有一吨。 select这些系统之一,让它监视你的cron守护进程。
然后写一个插件,将利用voretaq7提到的包装。 如果cronjob失败,并且crond也失败,你将会有一个提醒。
我build议你这样做的原因是你将所有的监控都集中在一个地方。 你最终必须build立一个网站广泛的监控系统,这样做更有意义,而不是分散的一系列监控系统。
您可以使用PushMon并创build一个“在每个星期三下午3:30”的时间表。 然后在脚本成功运行时“ping”PushMon URL。 如果PushMon URL由于机器closures或者cron无法运行(发生)而未被调用,或脚本失败,PushMon将在凌晨3:30提醒您。 您可以通过电子邮件,短信,电话,即时消息或Twitter获得提醒,并且该服务是免费的。
免责声明:我与PushMon相关联。
我为这种types的监控构build了一个简单的工具 – https://cronitor.io
它允许您设置间隔(每24小时)和持续时间(大于10分钟,小于2分钟等),然后在您的cron作业(或任何其他自动化任务)不运行时接收电子邮件/短信警报根据你定义的规则。
该工具对于单独的监视器是免费的,并且有多种监视需求的用户可以使用付费计划。