linux

如何在Linux上监控Node.js应用的运行状态

小樊
43
2025-04-03 12:46:16
栏目: 编程语言

在Linux上监控Node.js应用的运行状态有多种方法,以下是一些常用的工具和步骤:

使用PM2进行监控

PM2是一个功能强大的Node.js进程管理器,它不仅可以启动、停止和重启Node.js应用,还提供了丰富的监控功能。

  1. 安装PM2
npm install pm2 -g
  1. 启动应用并监控
pm2 start app.js --name myapi

这里app.js是你的Node.js应用入口文件,myapi是应用的名字。

  1. 查看应用状态
pm2 list
  1. 设置自动重启
pm2 set pm2_auto_restart 1
pm2 set pm2_restart_delay 30000

这些命令设置了应用自动重启,并在30秒后尝试重启。

  1. 查看日志
pm2 logs myapi
  1. 系统资源监控: PM2还提供了资源监控的功能,可以使用以下命令查看CPU、内存等资源的使用情况:
pm2 monit

使用Prometheus和Grafana进行监控

Prometheus是一个开源的监控系统,可以收集和存储指标数据,而Grafana则用于可视化这些数据。

  1. 安装Prometheus客户端
npm install prom-client
  1. 在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();
});
  1. 公开指标端点
app.get('/metrics', async (req, res) => {
  res.setHeader('Content-Type', client.register.contentType);
  res.end(await client.register.metrics());
});
  1. 使用Grafana进行可视化: 将Prometheus连接到Grafana,并创建自定义仪表板以可视化请求率、延迟和内存使用等指标。

使用内置模块和第三方库

Node.js提供了内置的process模块来获取进程信息,如CPU使用率和内存使用情况。此外,还可以使用第三方库如winston进行日志记录,express-status-monitor进行健康检查等。

使用Docker和外部监控服务

如果你在Docker中运行Node.js应用,可以使用Docker自带的工具如docker psdocker logstophtop等来监控容器的状态和资源使用情况。此外,还可以使用外部监控服务如Datadog、New Relic等来提供更全面的监控功能。

通过上述方法,你可以有效地监控Node.js应用在Linux上的运行状态,确保其稳定性和性能。

0
看了该问题的人还看了