上帝与Monit
哪一个用于stream程监控,为什么?
两种解决scheme都很好,两者都有一些优点和缺点。
上帝configuration文件是用Ruby编写的,所以你可以基本上做Ruby允许你做的所有事情,这是很多东西。 Monit必须使用自己的语法进行configuration,通常情况下可以,但是更具有限制性。 无论如何,您也可以使用Ruby生成监视configuration(作为部署策略的一部分)。
此外,monit使用更less的资源,因此如果您使用VPS或者没有任何备用内存,monit可能是更好的select。 就个人而言,我更喜欢上帝,因为它更可configuration。
这是一个非常好的上帝屏幕录像 。 这个屏幕录像还有很多意见反馈。
上帝泄漏记忆非常糟糕,所以我select了Monit作为我的VPS。 Monit一直运行在大约2MB的内存上,而我的上帝安装在Ruby 1.8.6上运行大约36个小时,泄漏到大约60MB的内存。 我不想监视我的系统监视工具,所以我放弃了上帝,去了Monit,完全没有问题。
上帝有很多问题,包括:
- 它泄漏内存
- 它有麻烦停止和重新启动进程
我在http://blog.bradgessler.com/use-monit-with-rails-not-god上写了一篇关于它的文章;
monit(如果有问题的话)唯一真正的问题是,如果运行大型集群,configuration文件可能会有点冗长,但是这可以通过模板系统来解决。
即使让上帝在我专用的Ubuntu服务器上运行,我也遇到了很多问题。 我最终只是放弃了。 Monit可能不是Ruby,但是它在很大程度上没有问题。
对于任何人发现这个post前进,你也可以考虑bluepill作为替代上帝。 尽pipe我希望上帝在过去两年中解决了记忆问题,但我知道蓝图从一开始就在小范围内运行。 虽然还不如monit,bluepill的足迹是非常合理的(〜16 MB VIRT,13 MB RES对我来说)。
Monit有它自己的问题:
- 空PID文件导致问题。
- 如果您有多个级别的依赖关系,则会在启动较低级别的依赖关系时启动顶级应用程序。 这对于一些使用情况可能很好,但不是特别灵活。
目前我觉得这很烦人。 幸运的是,你可以通过与他们的“组”function的依赖关系,但它并不特别令人满意。 无论如何,这是我的V5.1.1