- 首页 >
- 问答 >
-
编程语言 >
- Node.js 在 Debian 上如何进行性能监控
Node.js 在 Debian 上如何进行性能监控
小樊
36
2025-12-07 05:22:02
监控目标与总体架构
- 建议从四个层面建立可观测性:
- 系统层:CPU、内存、磁盘 I/O、网络等资源;
- 进程层:Node 进程的 CPU%、RSS、Heap、Event Loop Lag 等;
- 应用层:HTTP 延迟、吞吐、错误率、依赖调用;
- 可用性层:健康检查、告警、可视化与历史回溯。
- 在 Debian 上,常用组合是:PM2(进程与基础指标)、Prometheus + Grafana(时序与可视化)、New Relic/Datadog(APM)、NetData/Uptime Kuma(系统/可用性)、以及 Node.js 内置工具(快速排障与开发期分析)。
快速上手 PM2 与应用内健康检查
- 安装与启动
- 安装:sudo npm install -g pm2
- 启动:pm2 start app.js --name “my-app”
- 常用:pm2 status、pm2 logs my-app、pm2 monit、pm2 top
- 持久化:pm2 save && pm2 startup(开机自启与自动恢复)
- 健康检查端点(示例)
- 代码:
const http = require(‘http’);
http.createServer((req, res) => {
if (req.url === ‘/health’) {
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ });
res.end(‘OK’);
} else { /* 业务路由 */ }
}).listen(3000);
- 验证:curl http://localhost:3000/health
- 说明:PM2 适合快速获得 CPU/内存/日志 等运行时视图;健康检查便于 负载均衡/探针 判定存活。
系统级与 APM 监控
- 系统级实时与历史
- 实时:htop、atop、nmon
- 历史/统计:vmstat、iostat、sar(需安装 sysstat)、free、df
- 用途:定位 CPU 饱和、内存泄漏、I/O 瓶颈、磁盘空间 等系统根因。
- APM 与可视化
- New Relic / Datadog:一键接入 事务、错误、依赖、慢查询 等深度指标,适合生产环境持续观测。
- Prometheus + Grafana:
- 安装 Prometheus(示例):
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus_2.34.0.linux-amd64.deb
sudo dpkg -i prometheus_2.34.0.linux-amd64.deb
- 配置抓取(示例抓取 Node.js 应用指标端口 9100):
scrape_configs:
- job_name: ‘node’
static_configs:
- targets: [‘localhost:9100’]
- 访问 http://localhost:9090 查询与告警;Grafana 添加 Prometheus 数据源并导入面板进行可视化。
- NetData:sudo apt install netdata,访问 http://:19999 查看系统与应用实时仪表盘。
- Uptime Kuma:自托管可用性监控,支持 HTTP(s)/TCP/Ping 等,访问 http://localhost:3001 配置监控与通知。
深度性能分析与负载测试
- CPU/内存剖析
- 启动调试:node --inspect server.js,在 Chrome DevTools 的 chrome://inspect 进行采样与火焰图分析。
- 生产可用分析:node --prof 生成 V8 日志,再用 node --prof-process 输出可读报告,定位 热点函数/内存分配。
- 内存快照:heapdump 生成堆快照,分析 泄漏与对象保留路径。
- 负载与压力测试
- Autocannon:autocannon -c 100 -d 30 http://localhost:3000
- wrk:wrk -t12 -c400 -d30s http://localhost:3000
- Artillery:artillery run scripts/load-test.yml
- 说明:剖析与压测结合,可验证 优化效果 与 容量边界。
落地配置与告警建议
- 建议的最小闭环
- 运行与自愈:PM2 托管 + systemd 服务(便于开机自启、日志收集与重启策略)。
- 资源与可视化:Prometheus 抓取 Node/系统指标,Grafana 展示与告警面板。
- 可用性:Uptime Kuma 对 /health 做定时探测与通知。
- 日志:集中到 journald/systemd 或文件,必要时接入 ELK/Graylog/Splunk。
- 关键告警示例
- Node 进程 Crash/重启次数 异常
- HTTP 5xx 错误率 或 P95/P99 延迟 超过阈值
- 内存 RSS/Heap 持续增长或接近容器/实例上限
- 磁盘空间 低于阈值、CPU iowait 持续偏高
- 安全与维护
- 暴露给 Prometheus 的指标端口与路径需做 访问控制;
- Grafana/Prometheus 默认口令需修改,生产建议启用 TLS 与 认证;
- 剖析与快照仅在排障窗口短时开启,避免 性能与隐私 风险。