温馨提示×

CentOS上Node.js应用如何进行监控

小樊
32
2025-12-05 23:23:22
栏目: 编程语言

监控思路与分层

  • 建议从三层入手:
    1. 应用层:进程存活、重启次数、内存/CPU、HTTP 延迟与吞吐、未捕获异常;
    2. 系统层:CPU、内存、磁盘 I/O、网络、负载;
    3. 可视化与告警:指标存储与展示、阈值告警、可用性探测。
  • CentOS 上,常用的组合是:PM2/systemd 负责进程与应用监控,Prometheus + Grafana 负责指标可视化与告警,日志与 APM 负责错误与调用链追踪。

快速上手 PM2 与应用内监控

  • 安装与启动
    • 安装:sudo npm install -g pm2
    • 启动:pm2 start app.js --name “my-app”
    • 常用:pm2 list(查看状态)、pm2 monit(资源监控)、pm2 logs my-app(日志)、pm2 startup(开机自启)、pm2 save(持久化进程列表)
  • 常用阈值与自恢复
    • 内存超限重启:pm2 set pm2memoryrestart 100M
    • 最大重启次数:pm2 set pm2maxrestarts 5
    • 重启延迟:pm2 set pm2restartdelay 1000(单位毫秒)
  • 应用内健康与指标
    • 快速健康检查:使用 express-status-monitor 暴露 /status 页面查看实时指标与状态。
    • 自定义指标:使用 prom-client 暴露 HTTP 请求时延直方图 等指标,供 Prometheus 抓取。
    • 日志最佳实践:使用 winston 输出结构化日志,便于检索与聚合。

系统级监控与日志

  • 进程与资源
    • top/htop:实时查看进程 CPU、内存占用;htop 界面更友好,支持按键筛选。
    • glances:跨平台监控工具,集中展示 CPU、内存、磁盘、网络 等。
    • nmon / atop:更细粒度的系统性能监控与历史回看。
    • vmstat / iostat / free / sar / df:CPU、内存、I/O、文件系统空间等核心指标。
    • Nethogs / iftop:按进程统计网络流量、按网卡查看实时带宽。
  • systemd 服务与日志
    • 示例服务文件关键项:
      • ExecStart=/usr/bin/node /path/to/app.jsWorkingDirectory=/path/to/appUser=your-userEnvironment=NODE_ENV=productionRestart=always
    • 常用命令:systemctl daemon-reloadsystemctl start my-appsystemctl status my-appjournalctl -u my-app -f(实时查看服务日志)

Prometheus Grafana 与 APM 集成

  • Prometheus + Grafana
    • 部署 Prometheus 采集应用与系统指标,部署 Grafana 做可视化与告警面板。
    • Node.js 侧通过 prom-client 暴露指标(如 http_request_duration_ms 直方图),Prometheus 配置抓取目标后,在 Grafana 中构建 QPS、P95/P99 延迟、错误率、内存 RSS 等面板。
  • APM 与错误追踪
    • 商业与 SaaS:New RelicDatadog 提供 事务追踪、错误分析、依赖地图 等深度能力。
    • 开源方案:App Metrics(IBM 维护)用于采集应用原始性能数据,可与现有监控栈集成。

可用性与日志聚合建议

  • 可用性探测
    • 自托管状态页与告警:Uptime Kuma 支持 HTTP(s)、TCP、Ping、DNS 等探测与多通道通知,适合对公网/内网接口做 可达性与 SLA 监控。
  • 日志集中与分析
    • 结构化日志:使用 winston 输出 JSON 日志;
    • 集中分析:将日志接入 ELK Stack(Elasticsearch + Logstash + Kibana)GraylogSplunk,实现 错误聚类、检索与可视化

0