首页主机资讯如何通过Ubuntu Node.js日志监控应用

如何通过Ubuntu Node.js日志监控应用

时间2025-11-04 13:44:03发布访客分类主机资讯浏览1479
导读:通过Ubuntu监控Node.js应用日志的方法 1. 使用PM2进行进程管理与日志监控 PM2是Node.js常用的进程管理工具,内置日志管理功能,适合生产环境使用。 安装PM2:全局安装PM2,用于管理Node.js应用进程。npm...

通过Ubuntu监控Node.js应用日志的方法

1. 使用PM2进行进程管理与日志监控

PM2是Node.js常用的进程管理工具,内置日志管理功能,适合生产环境使用。

  • 安装PM2:全局安装PM2,用于管理Node.js应用进程。
    npm install pm2 -g
    
  • 启动应用并记录日志:通过PM2启动应用,指定应用名称及日志文件路径(默认日志路径为~/.pm2/logs/)。
    pm2 start app.js --name "my-node-app" --log /var/log/my-node-app.log
    
  • 实时查看日志:使用pm2 logs命令实时查看所有应用的日志,或指定应用名称查看单个应用日志(如pm2 logs my-node-app)。
  • 日志轮转配置:避免日志文件过大,设置日志轮转规则(最大10MB,保留7天)。
    pm2 set pm2-logrotate:max_size 10M
    pm2 set pm2-logrotate:retain 7
    

2. 基础命令行工具实时监控

Ubuntu自带的命令行工具可快速查看和过滤日志,适合简单场景。

  • 实时查看日志末尾:使用tail -f命令实时显示日志文件的新增内容(如tail -f /var/log/my-node-app.log)。
  • 过滤关键词:结合grep命令过滤特定日志(如错误日志),提升排查效率。
    tail -f /var/log/my-node-app.log | grep 'error'
    
  • 分页查看实时日志:用less命令结合tail -f,支持翻页查看(如tail -f /var/log/my-node-app.log | less)。
  • 定期刷新查看:使用watch命令每隔1秒刷新日志文件(如watch -n 1 tail -f /var/log/my-node-app.log)。

3. 配置Logrotate进行日志轮转

Logrotate是Ubuntu系统自带的日志管理工具,可自动切割、压缩和删除旧日志,防止磁盘空间耗尽。

  • 安装Logrotate:若未安装,通过以下命令安装。
    sudo apt-get install logrotate
    
  • 创建配置文件:在/etc/logrotate.d/目录下创建应用专属配置文件(如my-node-app)。
    sudo nano /etc/logrotate.d/my-node-app
    
  • 配置规则:添加以下内容,设置每日切割、保留7天、压缩旧日志。
    /var/log/my-node-app.log {
    
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 640 root adm
    }
        
    
  • 测试配置:手动运行Logrotate,验证配置是否生效。
    sudo logrotate -f /etc/logrotate.d/my-node-app
    

4. 使用Winston/Bunyan进行结构化日志记录

Winston和Bunyan是Node.js专业的日志库,支持结构化日志(如JSON格式),便于后续分析和集成。

  • Winston配置示例:安装Winston后,配置控制台、文件传输及日志级别。
    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 on port 3000');
        
    
  • Bunyan配置示例:安装Bunyan后,配置控制台和文件输出(日志格式为JSON)。
    const bunyan = require('bunyan');
    
    const logger = bunyan.createLogger({
    
      name: 'my-node-app',
      streams: [
        {
     level: 'info', stream: process.stdout }
    ,
        {
     level: 'error', path: 'logs/app-error.log' }
    
      ]
    }
        );
    
    logger.info('User logged in', {
     userId: 123 }
        );
    
    

5. 集成ELK Stack实现集中式日志管理

ELK(Elasticsearch+Logstash+Kibana)是强大的集中式日志管理方案,适合大规模应用。

  • 安装ELK组件:通过APT安装Elasticsearch、Logstash、Kibana。
    sudo apt-get update
    sudo apt-get install elasticsearch logstash kibana
    
  • 配置Logstash收集日志:创建Logstash配置文件(如/etc/logstash/conf.d/nodejs.conf),设置文件输入、过滤(可选)和Elasticsearch输出。
    input {
    
      file {
        
        path =>
         "/var/log/my-node-app.log"
        start_position =>
     "beginning"
      }
    
    }
    
    output {
    
      elasticsearch {
        
        hosts =>
         ["localhost:9200"]
        index =>
     "nodejs-logs-%{
    +YYYY.MM.dd}
    "
      }
    
    }
        
    
  • 启动服务并配置Kibana:启动Logstash和Kibana,配置Kibana连接Elasticsearch(修改/etc/kibana/kibana.yml中的elasticsearch.hosts),通过浏览器访问http://< server-ip> :5601,创建索引模式并可视化日志。

6. 使用第三方日志管理服务

若不想自建日志系统,可选择第三方服务(如Loggly、Datadog、Papertrail),提供日志收集、搜索、报警等功能,简化运维流程。

  • Loggly:通过npm包winston-loggly-bulk将日志发送到Loggly,配置报警规则。
  • Datadog:安装Datadog Agent,集成Node.js应用,监控日志和应用性能。
  • Papertrail:通过syslog或API接收日志,支持实时搜索和邮件报警。

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


若转载请注明出处: 如何通过Ubuntu Node.js日志监控应用
本文地址: https://pptw.com/jishu/741850.html
Ubuntu Node.js日志中如何识别瓶颈 Node.js在Ubuntu上的日志记录最佳实践

游客 回复需填写必要信息