CentOS Node.js项目如何监控
导读:CentOS 上 Node.js 项目监控实操指南 一 监控分层与总体思路 进程与可用性:确保进程存活、自动重启、快速定位异常,常用 PM2 或 systemd。 系统资源:CPU、内存、磁盘 I/O、网络等,使用 top/htop、vm...
CentOS 上 Node.js 项目监控实操指南
一 监控分层与总体思路
- 进程与可用性:确保进程存活、自动重启、快速定位异常,常用 PM2 或 systemd。
- 系统资源:CPU、内存、磁盘 I/O、网络等,使用 top/htop、vmstat、iostat、free、sar、nmon、glances 等命令。
- 应用指标与链路:QPS、延迟、错误率、GC、事件循环等,使用 Prometheus + Grafana 或 New Relic/Datadog 等 APM。
- 日志:结构化日志与检索分析,使用 Winston/Bunyan + ELK(Elasticsearch/Logstash/Kibana) 或等效方案。
- 健康检查与告警:暴露 /health 端点,结合 Uptime Kuma 或告警规则实现可视化与通知。
二 快速上手 PM2 与应用内指标
- 安装与启动
- 安装:sudo npm install pm2 -g
- 启动:pm2 start app.js --name my-app
- 常用:pm2 status、pm2 monit、pm2 logs my-app、pm2 startup、pm2 save
- 应用内基础指标
- 内存与 CPU:process.memoryUsage()、process.cpuUsage()
- HTTP 指标示例(使用 prom-client)
- 安装:npm i prom-client
- 代码示例:
- const client = require(‘prom-client’);
- const http = require(‘http’);
- const server = http.createServer((req,res)=> { res.end(‘OK’); } );
- const histogram = new client.Histogram({ name: ‘http_request_duration_seconds’, help: ‘Duration of HTTP requests in seconds’, labelNames: [‘method’,‘route’,‘code’], buckets: [0.01,0.05,0.1,0.5,1,2,5] } );
- server.listen(3000, ()=> console.log(‘Metrics on :3000/metrics’));
- server.on(‘request’, (req,res)=> { const end = client.timerEnd(histogram, [req.method, req.url, res.statusCode]); res.on(‘finish’, end); } );
- 建议:为生产环境启用 PM2 开机自启 与 日志轮转,便于持续观测与故障回溯。
三 系统级监控与日志分析
- 系统资源
- 安装与常用命令:
- htop:sudo yum install htop -y;htop
- sysstat:sudo yum install sysstat -y;sar -u 1 3(CPU)、sar -r 1(内存)
- nmon:sudo yum install nmon -y;nmon
- glances:sudo yum install glances -y;glances
- 安装与常用命令:
- 日志
- 结构化日志:使用 Winston 输出到文件与控制台,便于检索与聚合。
- 集中分析:部署 ELK(Elasticsearch/Logstash/Kibana),Logstash 采集 Node.js 日志并写入 ES,在 Kibana 中建立索引与可视化。
四 Prometheus Grafana 与 APM 集成
- Prometheus + Grafana
- 安装与启动(示例):sudo yum install prometheus -y;编辑 /etc/prometheus/prometheus.yml 添加抓取目标(如应用 /metrics :3000/metrics);sudo systemctl start prometheus
- Grafana:安装并启动 grafana-server;添加 Prometheus 数据源,导入 Node.js 或 Express 仪表盘模板,展示 QPS、延迟、错误率、内存、GC 等。
- APM 与商业监控
- New Relic:安装 newrelic 并配置 licenseKey 与 app_name,在 APM 控制台查看事务、错误、慢查询与依赖调用。
- Datadog:通过 Node.js 集成采集指标与日志,结合丰富告警策略实现全链路可观测。
五 健康检查与告警实践
- 健康检查端点
- 代码示例:
- const http = require(‘http’);
- http.createServer((req,res)=> { if (req.url === ‘/health’) return res.end(‘OK’); // … 正常路由 } ).listen(3000, ()=> console.log(‘Health on :3000/health’));
- 代码示例:
- 进程守护与系统服务
- systemd 服务示例(/etc/systemd/system/my-app.service):
- [Unit] Description=Node.js App; After=network.target
- [Service] User=your-user; WorkingDirectory=/path/to/app; ExecStart=/usr/bin/node /path/to/app/app.js; Restart=always; Environment=NODE_ENV=production
- [Install] WantedBy=multi-user.target
- 运维:sudo systemctl daemon-reload、start/enable/status;日志:journalctl -u my-app
- systemd 服务示例(/etc/systemd/system/my-app.service):
- 可用性与可视化告警
- Uptime Kuma:自托管状态监控与通知(如 Telegram/Discord/Slack),定时探测 /health 或端口连通性,面板直观展示在线率与响应时间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Node.js项目如何监控
本文地址: https://pptw.com/jishu/763452.html
