溫馨提示×

如何在Ubuntu上監控Node.js應用性能

小樊
34
2025-08-05 16:06:53
欄目: 編程語言

在Ubuntu上監控Node.js應用性能有多種方法,以下是一些常用的工具和方法:

使用PM2進行進程管理

  • 安裝PM2sudo npm install pm2 -g
  • 啟動應用pm2 start app.js --name "my-app"
  • 監控應用狀態pm2 status
  • 查看日志pm2 logs my-app
  • 查看應用狀態pm2 monit

使用systemd服務

  • 創建服務文件
[Unit]
Description=My Node.js Application
After=network.target

[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=your-user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
  • 啟動服務sudo systemctl daemon-reload && sudo systemctl start my-app
  • 查看服務狀態sudo systemctl status my-app

使用Prometheus和Grafana進行監控

  • 安裝Prometheus客戶端npm install prom-client
  • 在Node.js應用中定義指標
const client = require('prom-client');
const requestDuration = new client.histogram({
  name: 'http_request_duration_seconds',
  help: 'Duration of http requests in seconds',
  labelnames: ['method', 'status']
});
const activeRequests = new client.gauge({
  name: 'active_requests',
  help: 'Number of active requests'
});

app.use((req, res, next) => {
  const end = requestDuration.startTimer();
  activeRequests.inc();
  res.on('finish', () => {
    end({ method: req.method, status: res.statusCode });
    activeRequests.dec();
  });
  next();
});

app.get('/metrics', async (req, res) => {
  res.set('content-type', client.register.contentType);
  res.send(await client.register.metrics());
});
  • 公開指標端點:創建端點以向Prometheus公開指標。
  • 使用Grafana進行可視化:將Prometheus連接到Grafana并創建自定義儀表板。

使用Winston進行日志記錄

  • 安裝Winstonnpm install winston
  • 配置Winston
const winston = require('winston');
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('Application started');
logger.error('An error occurred');

使用node-statsd進行性能監控

  • 安裝node-statsdnpm install node-statsd
  • 配置node-statsd:將node-statsd與Etsy’s StatsD服務器對接。

通過上述方法,您可以在Ubuntu系統上有效地監控Node.js應用的性能和資源使用情況,確保應用的穩定性和高可用性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女