我在各种服务器上有几个cron作业和后台任务。这些任务可能因多种原因而失败:
- 磁盘空间不足
- 处理奇怪的、不可读的文件类型
- 程序中的逻辑错误/错误
- 无效的cron条目
- 收到无效的json
- 网络连接故障
- 数据库锁
- 系统库更新中断程序
他们为什么没能运行很重要,但最重要的是知道他们没能运行。
是否有一种统一的方法来监控多个作业,并在它们因任何原因未能按计划时间运行时发出警报?我使用的是Ubuntu,脚本主要使用Ruby。
注:
我特别想找一个跨多台服务器工作的框架或系统,它内置了通过电子邮件或文本发出警报的功能,并且可以在有限的磁盘空间中生存。因此如果cron作业运行不正常,我如何设置系统来告诉我?似乎不适用。
它仍在积极开发中,但我鼓励您看看https://github.com/jamesrwhite/minicron,我相信它符合您指定的所有要求,甚至更多!
免责声明:我是它的开发者。
Cronitor(https://cronitor.io)是我为这个目的而制作的工具。它基本上可以归结为一个跟踪信标,使用http请求作为ping(类似于pushmon)。
然而,我的一个需求(pushmon和类似工具无法提供)是,如果cron作业开始花费太长时间运行(或者相反,如果它们开始完成得太快),就会收到警报。Cronitor通过允许您选择性地触发一个开始事件和一个结束事件来跟踪持续时间,从而解决了这个问题。
持续时间跟踪对我来说是必须的,因为我有一个每小时安排一次的cronjob,但随着时间的推移,运行时间开始超过一个小时。那是一场灾难;)
Willhttp://www.pushmon.com满足您的需求?它的构建主要是为了让您知道cron作业或计划任务是否未能运行。你可以把它放在你的任何服务器上,并有电子邮件和短信提醒。这个想法是,当你的作业成功运行时,你会"ping"PushMon,如果它没有收到ping,就会提醒你。
尽管它可能无法满足您的所有需求:https://github.com/javan/whenever