在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上的运行状态,确保其稳定性和性能。