监视在ubuntu实例上运行的node.js脚本

时间:2015-09-23 08:35:28

标签: node.js monitoring

我有一个node.js脚本,它在ubuntu EC2实例上一天运行一次。此脚本从一些数千个远程API中提取数据并保存到本地数据库。有什么办法可以在远程服务器上监控这个node.js脚本吗?由于某种原因,脚本崩溃的情况很少,如果没有SSH实例并检查日志,我们无法弄清楚。然而,我在最初几次崩溃之后创建了一个小型系统,当脚本由于某些未捕获的异常以及脚本完成执行时崩溃时发送给我们一个电子邮件。

但是,我们需要开发一个更好的系统,我们可以通过管理应用程序的Web界面监视脚本的进度,该应用程序部署在其他实例上,并通过此接口触发脚本的启动/停止。有哪些可能的选择来实现这一目标?

3 个答案:

答案 0 :(得分:2)

如果你想留在Node.js,那么有几个过程监控工具:

除了监控流程之外,

PM2还有许多其他功能。您可以通过CLI或其官方Web界面监控您的流程:https://keymetrics.io/。快速搜索npm还提供了一堆很好的非官方gui工具:https://www.npmjs.com/search?q=pm2+web

Forever不像PM2那样功能丰富,但会执行基本的流程操作,npm也可以使用几个gui。

答案 1 :(得分:1)

您要解决的问题有两个:

  1. 安排要完成的工作
  2. 监控失败过程
  3. 简单来说,这很容易:安排一个cron作业并重新启动失败的东西,以便他们继续尝试。

    然而,当事情进展不顺利时,有助于更加细化您的日程安排以及如何执行。这也可以让您了解每一小部分工作。

    添加更多复杂性,您最终可能会遇到这样的事情:

    1. 安排启动所有内容的脚本(通过cron,如果这很舒服)
    2. 该脚本生成多个需要执行到队列中的作业
    3. 工作进程(或 n 工作进程)使用该队列并执行挂起作业
    4. 您可以监控作业的进度,以及每个工作人员的状态(崩溃次数,失败次数,已完成的工作等)。上面提到的其他工具是很好的候选者(永远,pm2等)
    5. 当工作失败时,其他工作人员可以拿起正在进行的小工作并重新启动它。这比重新启动整个过程更有效,并且还允许您根据分割工作负载的方式在 n 工作者之间并行化。

      您可以轻松地将状态发送到网络应用程序,以便您可以定期检查,而不必挖掘服务器日志。

      您还可以通过不同类型的故障获得更多智能。网络错误?重试5次。额定有限?逐渐退缩。崩溃?不要重试并通过电子邮件通知。等

答案 2 :(得分:0)

我用pm2尝试了这个,你可以得到任务的信息,然后赶紧或抓住日志文件。或者您可以拥有一个日志记录服务器,另请参阅:https://github.com/papertrail/remote_syslog2