在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上的運行狀態,確保其穩定性和性能。