我看到很多人将 monit 与 runit 结合使用。这不是多余的吗?同时使用 runit 有什么意义?是因为它在处理服务时更可靠吗(因为它不依赖于 pidfiles)?
谢谢!
答案1
看看runit
,我发现它是一个 init 替换。我认为大多数企业系统都会坚持使用其默认设置系统 V 初始化或者暴发户。我不认为改变它是一种常见的做法。
但是,这里的关系可能是 runit 提供了一种方便的方式来生成 Monit 并确保它保持运行。可能类似于从 inittab 运行 Monit。它本质上是“监视观察者”或监视您的监视系统。
实际上,我使用 Monit 作为守护进程,从未遇到过崩溃或被终止的问题。也许它的吸引力runit
在于它提供了一些额外的保护。
至于 Monit,它与进程名称模式匹配而不是 PID 文件。
答案2
runit 非常适合控制服务和日志记录,并且很好地遵循了 unix 方式:根据需要轻松组合简单的部分。它可以对服务启动/停止进行一些检查和事件处理,但您必须自己编写所有这些脚本。笔记:如果您的服务无法在前台运行,则 runit 将无法工作。
monit 可以用于控制服务(但不如 runit 好,因为您必须自己处理守护进程和日志记录),并且如果自守护进程公开正确的 pidfile,它也可以很好地与自守护进程配合使用。另一方面,它非常适合监视服务:事件处理、检查内存泄漏等。此外,它还具有用于浏览服务状态的漂亮仪表板(基于命令行和基于 Web)以及用于从多个服务器获取数据的商业仪表板 m/monit。
这样使用runit+monit就变成了这样:
- runit 用于服务监控、日志记录、自动重启等
- monit 用于通知服务状态变化、更多扩展检查和基本服务监控