怎样监控Debian的JS资源使用
小樊
43
2025-11-20 18:31:38
监控思路与分层
- 面向 Debian 的 JavaScript 资源监控,建议从三层入手:
- 系统层:观察 CPU、内存、I/O、网络 的整体消耗;
- 运行时层(Node.js):进程存活、内存与事件循环、HTTP 延迟、异常与 GC;
- 前端层(浏览器):页面加载与脚本执行、长任务、渲染与资源时序。
- 常用工具组合:PM2(进程与指标)、Node.js 内置 perf_hooks / --inspect(性能采集)、Chrome DevTools(前端分析)、Prometheus + Grafana(时序与可视化)、ELK/Graylog(日志集中)。这些工具在 Debian 上均可直接安装使用。
Node.js 后端监控
- 进程与资源面板:使用 PM2 启动与守护应用,实时查看 CPU/内存 并集中管理日志。
示例:
- 安装与启动:
sudo npm i -g pm2;pm2 start app.js --name my-app
- 资源监控:
pm2 monit;查看列表:pm2 list;日志:pm2 logs
- 指标与 APM:
- 暴露 Prometheus 指标:在应用引入 prom-client,为 HTTP 请求时延 等建立 Histogram,并暴露 /metrics 端点供抓取。
- 第三方 APM:接入 New Relic / Datadog,获取 响应时间、错误率、调用链 等深度数据。
- 诊断与排障:
- 代码级计时:
console.time/console.timeEnd()、process.hrtime();
- CPU/内存剖析:
node --inspect 配合 Chrome DevTools Performance/Memory;
- 内存快照:使用 heapdump 生成
.heapsnapshot 并在 DevTools 分析;
- 事件循环阻塞:结合 clinic.js 定位慢操作与异步延迟。
前端页面与浏览器监控
- 实验室分析:在目标页面 F12 → Performance 录制交互,定位 长任务(Long Tasks)、脚本耗时、回流/重绘与网络瀑布,聚焦首屏与关键交互路径。
- 线上 RUM 思路:在前端集成 Web Performance Tracer 等 SDK,配置 上报地址 与采样策略,收集 FP/FCP/LCP、CLS、资源时序、JS 错误 等用户体验指标,便于长期趋势与告警。
系统层与日志监控
- 资源观测:
- 交互式:
top/htop(进程 CPU/内存)、vmstat(系统整体资源)、iostat(磁盘 I/O)、free(内存)、df(磁盘空间);
- 服务日志:
journalctl -u your-node-service 查看 systemd 单元日志;tail -f /var/log/syslog 实时跟踪系统日志;必要时用 logrotate 做日志轮转。
- 日志集中与检索:将 Node.js(winston/bunyan/morgan) 与应用日志接入 ELK(Elasticsearch/Logstash/Kibana) 或 Graylog,实现 错误聚类、指标提取、可视化与告警。
可视化与告警落地
- 自建可视化:以 Prometheus 抓取 Node.js / 系统 指标,使用 Grafana 构建 仪表盘(进程 CPU/内存、HTTP 时延/P95/P99、事件循环延迟、GC 次数/耗时、磁盘/网络等),并设置 阈值告警。
- 可用性监控:部署 Uptime Kuma 对 HTTP/HTTPS 与关键接口做 可达性与响应时间 监控,支持 Telegram/Discord/Slack 等通知渠道,弥补仅资源监控的不足。