【问题标题】:Is there benefit to using Monit instead of a basic Upstart setup?使用 Monit 而不是基本的 Upstart 设置有什么好处?
【发布时间】:2011-06-10 23:54:10
【问题描述】:

我正在配置我的服务器以将 node.js 作为守护程序运行。我已经设置 Upstart 来处理节点的启动和关闭,效果很好。下一步是确保 node.js 在它死后重新启动。一些guides 建议使用Monit(或Fugue)来监控进程(在Monit 的情况下,通过向服务器发出HTTP 请求并等待响应)。

我很高兴使用 Monit 或 Fugue 之类的东西,但我不确定为什么不(或不能)只使用 Upstart 的 respawn feature。我假设 Upstart 将监视已启动进程的 PID,如果它死了,它就会再次启动它。 Monit 或 Fugue 有哪些 Upstart 没有的?

【问题讨论】:

标签: deployment node.js monit upstart


【解决方案1】:

我强烈建议同时使用 Monit 和 upstart。 Upstart 可以轻松地对 node.js 进行 deamonize,Monit 包含大量有用的应用程序检查,包括内存使用情况、http 请求、cpu 使用情况……

这是您可以获得的最基本设置的示例。您还可以轻松添加另一个监控配置(使用相同的启动和停止脚本),但使用 PID 文件和监控进程统计信息。

对于以下配置,在您的应用中创建一个简单的仅限本地的请求处理程序,如果一切正常,它只会以状态 200 进行响应。

监控配置:

check host app_name with address 127.0.0.1
    start "/sbin/start app_name"
    stop "/sbin/stop app_name"
    if failed port 80 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

Upstart 脚本(/etc/init/app_name):

description "app_name"

start on startup
stop on shutdown

script
    # Node needs HOME to be set
    export HOME="path/to/node/app"

    exec sudo -u nodejs /usr/local/bin/node path/to/node/app/server.js production 2>>/var/log/app_name.error.log >>/var/log/app_name.log
end script

【讨论】:

    【解决方案2】:

    鉴于 Upstart 只检查 PID,像 Monit 这样发出实际请求的工具将更忠实地为您提供应用程序健全性的答案。一个进程可能正在愉快地运行,但以某种方式停滞不前,以至于它无法为请求提供服务。

    【讨论】:

    • 这是一个很好的观点。一个工作的网络服务器不仅仅是活着,它实际上还必须能够处理请求!
    • 我认为这已经解决了。只要您的应用程序不可能存在但无法使用,Upstart 重生就可以了。 Monit 更适合网络服务器之类的东西,在这种情况下,服务器可能处于活动状态但无响应。感谢您的回答,现在很容易看到。
    • 除了测试本地进程外,我还用Monit测试了远程服务器的几个端口和本地文件权限,很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2022-08-03
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多