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

我正在configuration我的服务器来运行node.js作为守护进程。 我已经安装了Upstart来处理节点的启动和closures,这非常有效。 下一步是确保node.js在死亡时重新启动。 一些指南build议使用Monit (或者Fugue )来监视进程(在Monit的情况下,通过对服务器进行HTTP请求并等待响应)。

我很高兴使用Monit或Fugue之类的东西,但是我不确定为什么不使用Upstart的重生function (或不能)。 我认为,Upstart会监控启动过程的PID,如果死亡,就会再次启动。 Monit或Fugue给你的东西是不是Upstart?

鉴于Upstart只是检查PID,像Monit这样的工具可以提供实际的请求,更真实地为您提供应用程序完整性的答案。 一个进程可能会愉快地运行,但以某种方式卡住,以致它不能提供请求。

我强烈推荐使用Monit和新贵 。 Upstart使deamonize node.js变得容易,Monit包含了大量有用的应用程序检查,包括内存使用情况,http请求,CPU使用情况,…

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

对于下面的configuration,在您的应用程序中创build一个简单的仅限本地的请求处理程序,如果一切正常,则只响应状态200。

Monitconfiguration:

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