在Linux上监控Node.js应用的运行状态有多种方法,以下是一些常用的工具和步骤:
PM2是一个功能强大的Node.js进程管理器,它不仅可以启动、停止和重启Node.js应用,还提供了丰富的监控功能。
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 monit
Prometheus是一个开源的监控系统,可以收集和存储指标数据,而Grafana则用于可视化这些数据。
npm install prom-client
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());
});
Node.js提供了内置的process
模块来获取进程信息,如CPU使用率和内存使用情况。此外,还可以使用第三方库如winston
进行日志记录,express-status-monitor
进行健康检查等。
如果你在Docker中运行Node.js应用,可以使用Docker自带的工具如docker ps
、docker logs
、top
、htop
等来监控容器的状态和资源使用情况。此外,还可以使用外部监控服务如Datadog、New Relic等来提供更全面的监控功能。
通过上述方法,你可以有效地监控Node.js应用在Linux上的运行状态,确保其稳定性和性能。