9个最佳的NodeJS应用监控工具
你有没有遇到过应用程序崩溃的情况而陷入一片茫然之中?
客户是否通知你服务不可用?
这一定是一个困难的境地。多年来,NodeJS已经成为快速微服务和API开发中广泛使用的。随着工作负载运行在NodeJS上,对于关键指标的正确监控变得至关重要。
让我们来探索以下可以帮助你监控应用程序和服务器性能以及其他指标的Node.JS监控工具。
PM2
已经成为新手和专家开发人员使用的最著名的工具,用于确保他们的应用程序始终处于活动状态。PM2用于运行实时生产工作负载并从CLI或Web界面监控它们。你可以将其作为NPM模块安装。
PM2是一个企业级解决方案,提供以下开箱即用的功能。
- 在单个服务器上管理多个NodeJS应用程序
- 应用程序和错误
- 用于监控应用程序健康状况和指标的Web界面集成
- NodeJS应用程序的自动集群
- 应用程序的热重新加载
- 支持启动脚本
- 将日志流式传输到Web界面
使用PM2入门
要安装PM2,请确保已安装。要验证NPM的安装和版本,请使用以下命令。
npm --version
这个命令应该显示NPM的版本(如果已安装)。
接下来,使用以下命令安装PM2:
npm install -g pm2
全局标志-g
将全局安装并使模块可作为命令全局使用。要使用PM2启动任何应用程序,请转到包含NodeJS项目的文件夹,并运行以下命令:
pm2 start --name myapp
上述命令使用第一个参数中指定的文件启动一个NodeJs应用程序。它还将应用程序命名为myapp
。使用pm2
执行NodeJS应用程序时,它确保服务不会中断,如果中断,它会尝试自动重新启动应用程序。
要在Web界面上启用实时监控,你需要注册。生成密钥后,你将能够看到有关连接PM2与Web界面的指示。
Sematext
提供全栈监控。全栈意味着你可以完全了解你的基础设施和应用程序的可用性和性能、指标、日志、前端用户体验、API的健康和性能、SSL证书等。
Sematext拥有超过100个集成,包括NodeJS。以下是其中一些集成:
- Web服务器 – Nginx,Apache
- 数据库 – MySQL,MariaDB,PostgreSQL,Redis
- 容器 – Kubernetes,Docker,Rancher
- 其他语言 – PHP,,Python,Go,Java
- AWS – EC2,ELB,S3,Aurora
还有更多…
可以帮助监控延迟、请求速率、垃圾收集、异常、工作进程、事件、心跳等。你可以在一个漂亮的现成仪表板上可视化数据,或者根据需要创建自定义仪表板。
通过Slack、WebHooks、PageDuty、MS Teams等方式在出现问题时收到通知。Sematext提供了一站式全面的监控和日志分析解决方案。你可以查看以体验该平台。
Better Uptime
是一种现代监控服务,将可用性监控、事件管理和状态页面结合到一个设计精美的产品中。
设置需要3分钟。之后,每当您的Node.js应用程序出现错误或完全停止工作时,您都会收到电话、电子邮件或Slack提醒。主要功能如下:
- HTTP(s)、Ping、API、SSL和TLD到期、Cron作业检查
- 无限电话呼叫提醒
- 轻松的呼叫排班
- 事故的截图和错误日志
- Slack、Teams、Heroku、AWS和其他100多个集成
Appmetrics
Appmetrics是由IBM管理和维护的开源项目。该项目专注于提供收集优秀应用程序指标的基本功能,包括数据事务、网络速度、数据库查询性能、CPU和内存利用率、垃圾回收等各种活动。
将其与类似appmetrics-dash的插件合并,可以提供一个优秀的Web界面来监视您的应用程序。
您可以使用Appmetrics作为中间件来构建您的监控应用程序。
Raygun
Raygun是一个用于管理和监控多种编程语言(包括NodeJS)应用程序性能的平台。它可以帮助您使用崩溃日志实时调试问题,分析应用程序代码,并从代码本身找到错误点。
以下是一些功能列表。
- 提供实时和精确的错误报告
- 支持全栈错误报告
- 实时用户会话监控
- 服务器性能监控和瓶颈检测实时
Raygun值得投资时间和金钱来处理关键任务的应用程序。它提供的见解可以转化为巨大的投资回报率。
Express Status Monitor
Express Status Monitoring是一个专用于监控ExpressJS的开源工具。众所周知,ExpressJS是NodeJS中使用最广泛的Web框架。
如上面的快照所示,您可以监视响应时间、请求频率、状态代码、CPU/内存利用率和平均负载。
ClinicJS
Clinic.js是一个可用于与NodeJS应用程序集成以监控和获取关键性能参数的库。它由三个主要工具组成-Doctor、Bubbleprof和Flame。每个工具用于不同的指标监控。
ClinicJS Doctor
- 收集健康和启发式指标
- 自动在应用程序中注入探针
- 提供图形界面查看应用程序性能和实时指标
- 生成优化应用程序的建议
ClinicJS Bubbleprof
- 绘制描述内部应用程序执行的气泡图
- 通过显示函数执行图来帮助您定位错误
- 使用异步钩子收集指标
- 提供函数调用之间的延迟信息
ClinicJS Flame
- 专用CPU指标监控
- 用于实时监控应用程序CPU性能的图形界面
- 生成火焰图以帮助识别指标达到的最大值
- 提供有关应用程序的CPU消耗活动的见解
如果需要商业支持,可以提供。
AppSignal
AppSignal是一个商业产品,为Node.js的HTTP调用、Express、Next.js和Postgress提供自动仪器。
要开始使用它,您需要在服务器上安装一个轻量级的AppSignal代理程序,该代理程序收集必要的指标。在高层次上,它执行以下操作。
- 监控性能-找到并修复导致应用程序可用性和性能下降的代码或基础设施。
- 指标-在仪表板上可视化您关心的内容。
- 检测异常-在出现意外情况时得到通知。
- 监控服务器-不要再使用另一个服务器监控软件。您可以获得所有标准资源指标,如CPU、磁盘、内存、网络等。
Prometheus + Grafana
这个想法是结合两个强大的软件-Prometheus and Grafana。
Prometheus有一个名为prom-client的Nodejs客户端,安装在NodeJS服务器上收集指标。然后,您可以在同一台服务器上或远程安装Grafana从Prometheus获取指标进行可视化。
您可以根据需求从头开始创建Grafana仪表板,也可以利用以下两个仪表板。
这需要您了解这两个工具。如果您需要一些关于Prometheus的帮助,请查看这个Udemy course。
结论
监控经常被忽视,但对于应用程序的可用性非常重要。在开发成本成为一个关键因素的情况下,分析代码、监控性能并提供一个insight into errors的工具,具有很大的价值。它们节省时间和精力,并通过更快地解决问题来帮助您满足SLA。