Node.js 在 Linux 上如何监控
Node.js在Linux上的监控实践分为五个层次:应用进程与业务指标、系统资源、日志链路、指标可视化及性能剖析。借助PM2管理进程并输出内存与CPU指标,结合系统工具top、vmstat等监控资源,采用结构化日志配合ELK或APM工具实现可观测性,最终通过ChromeDevTools定位性能热点。
Node.js 在 Linux 上的监控实践

监控这件事,说复杂也复杂,说简单也简单。关键是把层次拆清楚,工具选对,流程跑通。下面从整体思路开始,一步步落地。
一 监控分层与总体思路
监控可以从五个维度来看:先是应用进程和业务指标——用 PM2 管理进程、查看资源、收集日志,或者在代码里用 process 模块把关键指标输出来。然后是系统资源层,用 top/htop、vmstat、iostat、free、df 盯住 CPU、内存、磁盘 I/O 和文件系统。第三层是日志链路,Winston、Bunyan、Pino 这类结构化日志工具是标配,配上 ELK(Elasticsearch/Logstash/Kibana)、Graylog 或 Splunk 做检索和可视化,排查问题效率会高很多。第四层是指标与可视化,可以自建 Prometheus + Grafana 看板,也可以直接用 New Relic、Datadog 这些 APM 服务。最后是性能剖析,用 node --inspect 配合 Chrome DevTools 做 CPU 和内存分析,精准定位热点和泄漏。
二 快速上手 PM2 与应用内监控
PM2 是 Node 生态里最常用的进程管理工具,没有之一。下面几个步骤就能把监控基础搭起来。
安装与启动
- 安装:
sudo npm install -g pm2 - 启动:
pm2 start app.js --name my-app - 常用命令:
pm2 list(查看进程列表)、pm2 monit(实时资源监控)、pm2 logs my-app(查看日志)、pm2 startup(设置开机自启)、pm2 sa ve(持久化当前进程列表)
进程守护与服务编排
用 systemd 管理 Node 服务是个更稳妥的方案——在服务配置里加上 Restart=always,进程崩溃后自动重启。配合 PM2 做多实例和负载均衡,生产环境基本就稳了。
应用内指标示例
在代码里输出一些关键指标非常实用:process.memoryUsage() 可以拿到常驻内存和堆大小,process.cpuUsage() 得到用户态和内核态的 CPU 时间。这些数据跟系统层的指标一对照,哪个环节出问题一目了然。
三 系统级监控与网络诊断
系统工具虽然古老,但老家伙们往往最靠谱。遇到卡顿或高负载,先翻它们的牌。
- 资源总览与进程定位:
top/htop按 CPU% 或 MEM% 排序,立刻找到哪个 Node 进程在吃资源。 - 深入系统:
vmstat 3给出进程、内存、I/O、CPU 的概览;iostat -x能看出磁盘 I/O 是不是瓶颈;free -m看内存使用详情;df -h检查磁盘空间。 - 历史与综合:
sar -u 1 3看 CPU 使用率,sar -r 1看内存,前提是装了sysstat包。 - 网络与进程流量:
nethogs可以按进程显示带宽占用,iftop则按连接看实时流量——排查网络波动时特别好用。
四 日志与 APM 的可观测性方案
日志和 APM 是“看见”系统运行状态的两只眼睛。结构化日志让查询变得像在数据库里做 SQL,APM 则帮你画出调用链路和依赖地图。
结构化日志
- 库选型:Winston、Bunyan、Pino 三选一,输出 JSON 格式,带上
requestId、userId等上下文,后续检索聚合效率翻倍。 - 传输与存储:日志可以写到控制台、文件,或者通过 HTTP 发送出去。集中到 ELK、Graylog 或 Splunk 后,画图表、设告警都很方便。
APM 与可视化
- 商业与托管:New Relic、Datadog 这类 APM 工具开箱即用,事务追踪、错误聚合、依赖地图、仪表盘一应俱全。
- 自建可观测性:用 Prometheus 采集自定义指标,比如 HTTP 延迟、事件循环延迟、内存和 GC 数据,再配上 Grafana 做可视化看板,还能设置阈值告警。自己掌控,灵活度更高。
五 性能剖析与故障定位
当线上真的出了性能问题,光靠日志和 stats 可能还不够,得掏出更锋利的工具做定点排查。
CPU/内存热点定位
带上 --inspect 参数启动应用:node --inspect app.js,然后用 Chrome DevTools 的 Performance 和 Memory 面板做 CPU 采样、内存快照。配合 PM2 monit 和系统 top/htop 观察资源变化,修复后马上能验证效果。
快速排查清单
总结一个实用的排查流程:先看 PM2 日志和异常堆栈,定位错误或异常;再看系统资源(CPU、内存、磁盘、网络)有没有异常波动;接着用 DevTools 做 CPU 采样或内存快照,找到热点代码或泄漏点;最后回归业务指标——延迟、吞吐、错误率,确认恢复。按这个顺序走,大部分问题都能快速锁定。


































