ubuntu如何监控nodejs应用
导读:使用PM2进行进程与性能监控 PM2是Node.js生态中最流行的进程管理工具之一,集进程守护、实时监控、日志管理于一体,非常适合Ubuntu环境下监控Node.js应用。 安装与启动:通过npm全局安装PM2,然后启动应用并指定名称(便...
使用PM2进行进程与性能监控
PM2是Node.js生态中最流行的进程管理工具之一,集进程守护、实时监控、日志管理于一体,非常适合Ubuntu环境下监控Node.js应用。
- 安装与启动:通过npm全局安装PM2,然后启动应用并指定名称(便于后续管理):
sudo npm install pm2 -g pm2 start app.js --name "my-node-app" - 实时监控:使用
pm2 monit命令打开交互式界面,可实时查看应用的CPU、内存使用率、日志输出及进程状态;也可通过pm2 list查看所有进程的概览信息,pm2 show < app_name>获取特定进程的详细指标(如内存占用、重启次数、运行时间)。 - 日志管理:
pm2 logs命令可实时查看应用日志,支持按进程名称过滤;还可将日志保存到文件(如pm2 logs > app.log),方便后续分析。
系统级命令行工具监控
Ubuntu自带的命令行工具可直接查看系统资源占用,快速定位Node.js进程的资源消耗问题。
- htop:交互式进程查看器,比
top更直观。安装后运行htop,可通过F3搜索“node”关键词,快速找到Node.js进程,查看其实时CPU、内存、线程使用情况。 - top/uptime:
top命令实时显示系统进程的资源占用排名(按P键按CPU排序,M键按内存排序);uptime命令可快速查看系统平均负载(1分钟、5分钟、15分钟的平均进程数)。 - vmstat/iostat:
vmstat 1每秒输出系统内存、进程、IO、CPU等活动情况(重点关注free内存、si/so交换分区使用量);iostat 1监控磁盘IO性能(如tps每秒传输次数、await平均IO等待时间)。
第三方监控工具(可视化与深度分析)
对于生产环境,需要更全面的监控(如指标趋势、告警、链路追踪),推荐以下工具组合:
- Prometheus + Grafana:
- Prometheus是开源时间序列数据库,负责收集和存储指标;Grafana是可视化工具,可将Prometheus中的数据转换为美观的仪表板。
- 步骤:① 在Node.js应用中安装
prom-client库,定义指标(如HTTP请求耗时、活跃请求数、内存使用量),并暴露/metrics端点;② 配置Prometheus抓取该端点;③ 在Grafana中添加Prometheus数据源,导入Node.js监控模板(如“Node Exporter Full”),即可查看实时指标。
- New Relic/Datadog:
- 全栈APM工具,提供应用性能监控(APM)、错误追踪、日志管理、分布式追踪等功能。只需在应用中安装对应SDK(如
newrelic、@datadog/datadog-api-client),配置API密钥,即可自动采集性能数据(如请求延迟、数据库查询时间、函数调用栈),无需修改大量代码。
- 全栈APM工具,提供应用性能监控(APM)、错误追踪、日志管理、分布式追踪等功能。只需在应用中安装对应SDK(如
日志记录与分析
日志是监控的重要补充,通过记录应用关键事件(如请求、错误、数据库操作),可快速定位问题根源。
- Winston:Node.js流行的日志库,支持多传输(控制台、文件、数据库),并能格式化日志(如JSON)。配置示例:
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'logs/error.log', level: 'error' } ), new winston.transports.File({ filename: 'logs/combined.log' } ) ] } ); logger.info('Application started'); logger.error('Database connection failed'); - ELK Stack(Elasticsearch + Logstash + Kibana):用于集中式日志管理。将Node.js日志发送到Logstash(或Filebeat),经Elasticsearch索引后,通过Kibana进行可视化分析(如搜索特定错误日志、统计错误频率)。
健康检查与系统服务监控
- 健康检查端点:在应用中添加
/health接口,返回应用状态(如运行时间、内存使用、依赖服务状态),方便监控系统定期探测(如Prometheus的blackbox_exporter)。示例代码:app.get('/health', (req, res) => { const healthStatus = { uptime: process.uptime(), memoryUsage: process.memoryUsage(), status: 'ok', timestamp: Date.now() } ; res.status(200).json(healthStatus); } ); - Systemd服务管理:将Node.js应用配置为systemd服务,实现开机自启、自动重启、状态监控。创建服务文件
/etc/systemd/system/my-node-app.service:启动服务并设置开机自启:[Unit] Description=Node.js Application Service After=network.target [Service] ExecStart=/usr/bin/node /path/to/your/app.js WorkingDirectory=/path/to/your/app User=your-user Group=your-group Environment=NODE_ENV=production Restart=always [Install] WantedBy=multi-user.targetsudo systemctl start my-node-app & & sudo systemctl enable my-node-app;通过sudo systemctl status my-node-app查看服务状态。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu如何监控nodejs应用
本文地址: https://pptw.com/jishu/738091.html
