首页主机资讯ubuntu如何监控nodejs应用

ubuntu如何监控nodejs应用

时间2025-10-29 19:41:05发布访客分类主机资讯浏览1369
导读:使用PM2进行进程与性能监控 PM2是Node.js生态中最流行的进程管理工具之一,集进程守护、实时监控、日志管理于一体,非常适合Ubuntu环境下监控Node.js应用。 安装与启动:通过npm全局安装PM2,然后启动应用并指定名称(便...

使用PM2进行进程与性能监控
PM2是Node.js生态中最流行的进程管理工具之一,集进程守护、实时监控、日志管理于一体,非常适合Ubuntu环境下监控Node.js应用。

  • 安装与启动:通过npm全局安装PM2,然后启动应用并指定名称(便于后续管理):
    sudo npm install pm2 -g
    pm2 start app.js --name "my-node-app"
    
  • 实时监控:使用pm2 monit命令打开交互式界面,可实时查看应用的CPU、内存使用率、日志输出及进程状态;也可通过pm2 list查看所有进程的概览信息,pm2 show < app_name> 获取特定进程的详细指标(如内存占用、重启次数、运行时间)。
  • 日志管理pm2 logs命令可实时查看应用日志,支持按进程名称过滤;还可将日志保存到文件(如pm2 logs > app.log),方便后续分析。

系统级命令行工具监控
Ubuntu自带的命令行工具可直接查看系统资源占用,快速定位Node.js进程的资源消耗问题。

  • htop:交互式进程查看器,比top更直观。安装后运行htop,可通过F3搜索“node”关键词,快速找到Node.js进程,查看其实时CPU、内存、线程使用情况。
  • top/uptimetop命令实时显示系统进程的资源占用排名(按P键按CPU排序,M键按内存排序);uptime命令可快速查看系统平均负载(1分钟、5分钟、15分钟的平均进程数)。
  • vmstat/iostatvmstat 1每秒输出系统内存、进程、IO、CPU等活动情况(重点关注free内存、si/so交换分区使用量);iostat 1监控磁盘IO性能(如tps每秒传输次数、await平均IO等待时间)。

第三方监控工具(可视化与深度分析)
对于生产环境,需要更全面的监控(如指标趋势、告警、链路追踪),推荐以下工具组合:

  • Prometheus + Grafana
    • Prometheus是开源时间序列数据库,负责收集和存储指标;Grafana是可视化工具,可将Prometheus中的数据转换为美观的仪表板。
    • 步骤:① 在Node.js应用中安装prom-client库,定义指标(如HTTP请求耗时、活跃请求数、内存使用量),并暴露/metrics端点;② 配置Prometheus抓取该端点;③ 在Grafana中添加Prometheus数据源,导入Node.js监控模板(如“Node Exporter Full”),即可查看实时指标。
  • New Relic/Datadog
    • 全栈APM工具,提供应用性能监控(APM)、错误追踪、日志管理、分布式追踪等功能。只需在应用中安装对应SDK(如newrelic@datadog/datadog-api-client),配置API密钥,即可自动采集性能数据(如请求延迟、数据库查询时间、函数调用栈),无需修改大量代码。

日志记录与分析
日志是监控的重要补充,通过记录应用关键事件(如请求、错误、数据库操作),可快速定位问题根源。

  • Winston:Node.js流行的日志库,支持多传输(控制台、文件、数据库),并能格式化日志(如JSON)。配置示例:
    const winston = require('winston');
    
    const logger = winston.createLogger({
    
      level: 'info',
      format: winston.format.json(),
      transports: [
        new winston.transports.Console(),
        new winston.transports.File({
     filename: 'logs/error.log', level: 'error' }
    ),
        new winston.transports.File({
     filename: 'logs/combined.log' }
    )
      ]
    }
        );
        
    logger.info('Application started');
        
    logger.error('Database connection failed');
        
    
  • ELK Stack(Elasticsearch + Logstash + Kibana):用于集中式日志管理。将Node.js日志发送到Logstash(或Filebeat),经Elasticsearch索引后,通过Kibana进行可视化分析(如搜索特定错误日志、统计错误频率)。

健康检查与系统服务监控

  • 健康检查端点:在应用中添加/health接口,返回应用状态(如运行时间、内存使用、依赖服务状态),方便监控系统定期探测(如Prometheus的blackbox_exporter)。示例代码:
    app.get('/health', (req, res) =>
     {
    
      const healthStatus = {
    
        uptime: process.uptime(),
        memoryUsage: process.memoryUsage(),
        status: 'ok',
        timestamp: Date.now()
      }
        ;
        
      res.status(200).json(healthStatus);
    
    }
        );
        
    
  • Systemd服务管理:将Node.js应用配置为systemd服务,实现开机自启、自动重启、状态监控。创建服务文件/etc/systemd/system/my-node-app.service
    [Unit]
    Description=Node.js Application Service
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/node /path/to/your/app.js
    WorkingDirectory=/path/to/your/app
    User=your-user
    Group=your-group
    Environment=NODE_ENV=production
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    启动服务并设置开机自启:sudo systemctl start my-node-app & & sudo systemctl enable my-node-app;通过sudo systemctl status my-node-app查看服务状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu如何监控nodejs应用
本文地址: https://pptw.com/jishu/738091.html
Debian下Telnet连接慢怎么优化 ubuntu如何查看nodejs进程

游客 回复需填写必要信息