Node.js:如何在服务器崩溃时收到警告

Node.js: How To Get Warned When Server Crashes

本文关键字:崩溃 警告 服务器 js Node      更新时间:2023-09-26

当我的服务器因任何原因崩溃时,我如何收到警告?HopToad或任何其他服务会这样做吗?

谢谢

编辑:

我正在使用 Heroku 作为节点.js。这不允许我运行其他任何东西。我需要一些东西来从内到外监控我的代码,而无需运行任何其他进程。

谢谢

你可以尝试在你的节点.js程序中处理uncaughtException事件,并在那里做你的"警告我"的事情。或者,您可以使用正常运行时间机器人等服务来监视您的应用程序是否正在侦听指定的端口。

实际上有很多选择!

在我看来,Monit,Forever和Supervisored是脱颖而出的人。

由于@rob-cowie已经回答了关于主管的问题,在这里你会得到一些关于"永远"和"monit"的指针。

Monit 是管理计算机上服务的整体解决方案 - 在它们崩溃或占用太多资源时通知您并重新启动它们。

  • Forever with nodejs 的完整示例
  • 带有 updstart 和 monit 的 nodejs(来自以前永远使用的人)

还没有找到一个很好的理由来用户监督而不是监控,但是在受监督的邮件列表中,我看到了使用 monit 来监控受监督的建议!

一种方法是定期检查您是否可以成功访问您正在服务的页面,请参阅 http://wasitup.com/。

另一种方法是监视计算机上的服务器进程。执行此操作的一个好方法是使用 Supervisord 启动节点.js。它可以重新启动崩溃的进程并向您发送电子邮件。围绕 intarweb 有很多例子,包括部署示例1

我刚刚整理了一个侦听未处理异常的类,当它看到一个时:

  • 将堆栈跟踪打印到控制台
  • 将其记录在自己的日志文件中
  • 通过电子邮件向您发送堆栈跟踪
  • 重新启动服务器(或终止它,由您决定)

它需要对您的应用程序进行一些调整,因为我还没有使其通用,但它只有几行,它可能就是您正在寻找的!

它从您的应用程序内部运行,如果您想要邮件通知,则无需包含任何其他文件(nodemailer除外.js。

看看吧!

如果你还在 Node.js 上使用 heroku,那么 Nodejitsu 也值得一看。它对 node 有很好的支持,并且永久运行,如果您的应用程序崩溃循环和其他事情,它会通过电子邮件通知。非常方便。

此外,就处理uncaughtException而言,我会避免这种情况,根据经验,它是不稳定的,并且在最新的节点.js api 文档中也指出它是不可靠和不稳定的。见 http://nodejs.org/api/process.html#process_event_uncaughtexception

使用类似永远的东西!