我有一个Rails应用程序,它使用rufus-scheduler来安排它的一些任务。调度程序在启动Rails应用程序的unicorn脚本的after_fork中初始化(参考:https://gist.github.com/jkraemer/3851917)。
最近,我遇到了一个场景,即unicorn调度程序线程在托管它的独角兽进程仍处于活动状态时被杀死。这会导致调度程序停机很长时间而不另行通知。
我想设置一个警报和监控系统来处理应该具备以下功能的场景: 1.每当调度程序线程被杀死/中止时抛出警报。 2.如果Rails进程正在运行,请重新启动调度程序。
通过cron任务和处理自动重启来了解调度程序运行状态的合适方法是什么?
答案 0 :(得分:1)
如果您带来了一个cron任务来观看rufus-scheduler,为什么不放弃rufus-scheduler并使用Whenever进行所有调度?因此,您将获得100%的解决方案。
另一种选择,使用Foreman来管理a)您的Rails应用程序b)托管您的rufus-scheduler日程表的单独进程(它可能只是"仅计划"您的Rails应用程序的版本) (这是blog post中的一个很好的例子)。还有God。
如果你看一下受到rufus-scheduler启发的发条的发条,他们detail这样一个应用程序/多个处理scenarii。
然后你可以查看各种工具来查看日志并在出现错误时提醒您。
<强>更新强>
也许这个要点可以提供帮助:https://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2