Node.js应用在CentOS如何监控
导读:Node.js应用在CentOS上的监控方法 1. 使用PM2进程管理器监控 PM2是Node.js生态中最流行的进程管理工具之一,提供进程守护、实时监控、日志管理等功能,适合需要快速部署和管理的场景。 安装PM2:通过npm全局安装,命...
Node.js应用在CentOS上的监控方法
1. 使用PM2进程管理器监控
PM2是Node.js生态中最流行的进程管理工具之一,提供进程守护、实时监控、日志管理等功能,适合需要快速部署和管理的场景。
- 安装PM2:通过npm全局安装,命令为
sudo npm install pm2 -g。 - 启动应用:使用
pm2 start app.js --name "my-app"启动应用(将app.js替换为你的入口文件,my-app为自定义应用名称)。 - 查看状态:通过
pm2 status查看所有进程的运行状态(包括CPU、内存占用、重启次数等)。 - 实时监控:
pm2 monit打开交互式界面,实时显示应用的CPU、内存使用趋势及日志输出。 - 日志管理:
pm2 logs my-app实时查看应用日志;pm2 save保存当前进程列表;pm2 startup生成开机自启脚本(确保服务重启后自动恢复)。
2. 通过Systemd管理服务
若需将Node.js应用作为系统服务运行(实现开机自启、进程守护),可使用CentOS内置的Systemd工具。
- 创建服务文件:用
sudo vi /etc/systemd/system/my-app.service创建服务文件,内容如下(替换路径、用户、组为实际值):[Unit] Description=Node.js Application Service After=network.target [Service] User=your-user Group=your-group WorkingDirectory=/path/to/your/app ExecStart=/usr/bin/node /path/to/your/app/app.js Restart=always # 应用崩溃时自动重启 [Install] WantedBy=multi-user.target - 启动与启用服务:
sudo systemctl start my-app启动服务;sudo systemctl enable my-app设置开机自启。 - 查看状态与日志:
sudo systemctl status my-app查看服务运行状态;sudo journalctl -u my-app -f实时查看应用日志(-f表示跟随日志输出)。
3. 利用Node.js内置模块监控
Node.js提供process和os模块,无需安装第三方工具即可获取基础性能指标,适合简单监控需求。
- process模块:获取内存使用(
process.memoryUsage(),返回rss(常驻内存)、heapUsed(堆内存使用)等)、CPU时间(process.cpuUsage(),返回用户态/内核态CPU时间)。 - os模块:获取系统级信息(
os.freemem()(空闲内存)、os.totalmem()(总内存)、os.cpus()(CPU核心信息)、os.uptime()(系统运行时间))。
示例代码:
const os = require('os');
const memory = process.memoryUsage();
console.log(`内存使用:${
memory.heapUsed / 1024 / 1024}
MB / ${
os.totalmem() / 1024 / 1024}
MB`);
console.log(`CPU核心数:${
os.cpus().length}
`);
4. 使用系统级监控命令
CentOS提供的命令行工具可快速查看系统整体性能,辅助定位Node.js应用的资源瓶颈。
- top/htop:
top命令实时显示进程CPU、内存占用(按M按内存排序,P按CPU排序);htop(需安装:sudo yum install htop)是top的增强版,支持鼠标操作和颜色高亮。 - vmstat:
vmstat 3每3秒输出一次系统资源使用情况(包括进程数、内存、CPU、磁盘I/O等)。 - iostat:
iostat -x 1查看磁盘I/O详细信息(-x表示扩展模式,1表示每秒刷新)。 - sar:
sar -u 1 3查看CPU使用率(-u表示CPU,1表示间隔1秒,3表示采集3次)。
5. 第三方监控工具(高级需求)
对于生产环境,建议使用专业的第三方监控工具,实现全面的性能追踪、错误报警和可视化。
- Prometheus + Grafana:
- Prometheus:开源时间序列数据库,用于收集和存储监控指标。安装后配置
prometheus.yml,添加Node.js应用的监控目标(如targets: ['localhost:9090'])。 - Grafana:开源可视化工具,用于展示Prometheus中的数据。添加Prometheus为数据源,导入Node.js监控仪表盘(如
Node Exporterdashboard),实现CPU、内存、请求延迟等的可视化。
- Prometheus:开源时间序列数据库,用于收集和存储监控指标。安装后配置
- New Relic/Datadog:
- New Relic:全栈APM工具,提供代码级性能分析、错误追踪和实时监控。安装
newrelicNode.js代理(npm install newrelic --save),配置newrelic.js(填写许可证密钥和应用名称),重启应用后即可查看监控数据。 - Datadog:云原生监控平台,支持Node.js应用的性能监控、日志管理和分布式追踪。安装
dd-trace代理(npm install dd-trace --save),配置tracer.init()(设置服务名称),实现应用性能数据的自动收集。
- New Relic:全栈APM工具,提供代码级性能分析、错误追踪和实时监控。安装
6. 日志监控与分析
日志是排查问题的关键,可通过以下工具收集和分析Node.js应用日志:
- ELK Stack(Elasticsearch + Logstash + Kibana):
- Logstash:收集应用日志(编辑
/etc/logstash/conf.d/nodejs.conf,配置文件输入路径和Elasticsearch输出)。 - Elasticsearch:存储和索引日志数据(启动Elasticsearch服务:
sudo systemctl start elasticsearch)。 - Kibana:可视化日志数据(启动Kibana:
sudo systemctl start kibana,访问http://localhost:5601,创建索引模式并设置可视化仪表盘)。
- Logstash:收集应用日志(编辑
- Winston/Bunyan:Node.js日志库,用于结构化日志记录(如添加时间戳、日志级别、请求ID等),方便后续分析。示例代码(使用Winston):
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' } ), new winston.transports.File({ filename: 'combined.log' } ), new winston.transports.Console() ] } ); logger.info('Application started');
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js应用在CentOS如何监控
本文地址: https://pptw.com/jishu/745896.html
