温馨提示×

Linux 系统中 Node.js 如何监控

小樊
32
2025-12-16 10:32:25
栏目: 编程语言

Linux 下 Node.js 监控实践指南

一 进程与服务监控

  • 使用 PM2 进行进程守护与资源观测:安装命令为 npm install pm2 -g;常用命令包括:pm2 start app.js --name “my-app”(启动并命名)、pm2 status(查看状态)、pm2 monit(实时资源监控)、pm2 logs my-app(查看日志)。PM2 支持集群、自动重启、日志管理与开机自启,适合生产环境的一站式进程管理。
  • 使用 systemd 将应用作为系统服务托管:创建服务文件 /etc/systemd/system/my-app.service,关键配置示例:
    ExecStart=/usr/bin/node /path/to/app.js
    WorkingDirectory=/path/to/app
    User=your-user
    Environment=NODE_ENV=production
    Restart=always
    常用命令:sudo systemctl start my-appsudo systemctl status my-appsudo journalctl -u my-app -f(实时查看服务日志)。systemd 提供稳定的进程生命周期管理与日志归集,适合系统级运维。

二 日志监控与可视化

  • 实时与检索:使用 tail -f /path/to/app.log 实时跟踪日志;结合 grep ‘keyword’ 做关键字过滤;用 watch -n 1 “tail -n 10 /path/to/app.log” 定时刷新尾部日志。
  • 结构化与轮转:在代码中集成 WinstonBunyan 等日志库,统一日志级别、格式与输出目标,并配置日志轮转策略,便于长期留存与检索。
  • 集中化与可视化:引入 ELK Stack(Elasticsearch/Logstash/Kibana)GraylogFluentd,实现多实例日志的集中采集、分析与可视化,支撑告警与审计。

三 系统级资源监控

  • 基础观测:使用 top/htop 查看进程 CPU/内存 占用;vmstat 观察进程、内存、分页、块 I/O 与 CPU 活动;iostat 监控磁盘 I/O;free 查看内存使用;df 报告文件系统空间。
  • 增强工具:在 CentOS 可安装 nmon/atop 做更全面的资源与历史趋势观测;在 Debian 系可使用 sysstat 工具包(含 sar)收集与报告系统性能数据,便于容量规划与瓶颈定位。

四 应用性能与深度分析

  • 内置指标与健康检查:在代码中调用 process.memoryUsage()process.cpuUsage() 获取进程级资源快照,结合 /health/status 端点暴露关键指标(如 RSS、堆内存、事件循环延迟 等),便于监控系统或网关探活与拉取指标。
  • 调试与剖析:使用 node --inspectnode --inspect-brk 连接 Chrome DevTools Performance 面板进行 CPU/内存剖析;使用 node --profnode --prof-process 生成并分析 V8 性能日志,定位热点函数与内存分配。
  • APM 与分布式追踪:接入 New RelicDatadogAPM,获取 事务追踪、依赖调用链、错误与慢事务分析 等深度可观测能力,结合指标与日志实现端到端排障。

五 快速落地方案

  • 小型或单机部署:用 PM2 启动应用(如 pm2 start app.js --name “my-app”),通过 pm2 monit 观测资源,使用 pm2 logs my-app 实时查看日志;按需接入 Winston/Bunyan 做结构化日志。
  • 系统服务化与集中观测:以 systemd 托管(配置 Restart=always),用 journalctl -u my-app -f 查看服务日志;系统层面用 htop/nmon 观测资源;日志统一到 ELK/Graylog;应用侧暴露 /status 端点并接入 New Relic/Datadog 做 APM 与告警。

0