在Linux上监控Node.js应用的运行状态有多种方法,以下是一些常用的工具和步骤:
使用PM2进行监控
PM2是一个功能强大的Node.js进程管理器,它不仅可以启动、停止和重启Node.js应用,还提供了丰富的监控功能。
- 安装PM2:
npm install pm2 -g
- 启动应用并监控:
pm2 start app.js --name myapi
这里app.js
是你的Node.js应用入口文件,myapi
是应用的名字。
- 查看应用状态:
pm2 list
- 设置自动重启:
pm2 set pm2_auto_restart 1 pm2 set pm2_restart_delay 30000
这些命令设置了应用自动重启,并在30秒后尝试重启。
- 查看日志:
pm2 logs myapi
- 系统资源监控: PM2还提供了资源监控的功能,可以使用以下命令查看CPU、内存等资源的使用情况:
pm2 monit
使用Prometheus和Grafana进行监控
Prometheus是一个开源的监控系统,可以收集和存储指标数据,而Grafana则用于可视化这些数据。
- 安装Prometheus客户端:
npm install prom-client
- 在Node.js应用中定义指标:
const client = require('prom-client'); const httpRequestDuration = new client.histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelnames: ['method', 'route'], buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500] }); app.use((req, res, next) => { const start = httpRequestDuration.startTimer(); res.on('finish', () => { const duration = httpRequestDuration.labels(req.method, req.route).endTimer(start); console.log(`${req.method} ${req.route} ${duration}ms`); }); next(); });
- 公开指标端点:
app.get('/metrics', async (req, res) => { res.setHeader('Content-Type', client.register.contentType); res.end(await client.register.metrics()); });
- 使用Grafana进行可视化: 将Prometheus连接到Grafana,并创建自定义仪表板以可视化请求率、延迟和内存使用等指标。
使用内置模块和第三方库
Node.js提供了内置的process
模块来获取进程信息,如CPU使用率和内存使用情况。此外,还可以使用第三方库如winston
进行日志记录,express-status-monitor
进行健康检查等。
使用Docker和外部监控服务
如果你在Docker中运行Node.js应用,可以使用Docker自带的工具如docker ps
、docker logs
、top
、htop
等来监控容器的状态和资源使用情况。此外,还可以使用外部监控服务如Datadog、New Relic等来提供更全面的监控功能。
通过上述方法,你可以有效地监控Node.js应用在Linux上的运行状态,确保其稳定性和性能。