温馨提示×

如何在Ubuntu上监控Node.js应用性能

小樊
44
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