首页 文章

使用Monit而不是基本的Upstart设置有什么好处?

提问于
浏览
52

我'm configuring my server to run node.js as a daemon. I'已设置Upstart来处理节点的启动和关闭,这非常有效 . 下一步是确保node.js在它死亡时重新启动 . 一些guides建议使用Monit(或Fugue)来监控进程(在Monit的情况下,通过向服务器发出HTTP请求并等待响应) .

我'm happy to use something like Monit or Fugue, but I'我不确定为什么不会使用Upstart的respawn feature . 我假设Upstart将监视启动过程的PID,如果它死了就再次启动它 . Monit或Fugue给你的Upstart不是什么?

2 回答

  • 76

    鉴于Upstart只是检查PID,像Monit这样的工具可以提供实际请求,可以更真实地为您提供应用程序理智的答案 . 一个进程可能会愉快地运行但是以某种方式停留,以至于它不提供请求 .

  • 39

    我强烈建议同时使用 Monit AND upstart . Upstart可以很容易地对node.js进行deamon化,Monit包含大量有用的应用程序检查,包括内存使用,http请求,cpu使用,......

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

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

    Monit配置:

    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
    

相关问题