首页主机资讯Node.js日志Ubuntu中怎样监控

Node.js日志Ubuntu中怎样监控

时间2025-10-13 22:57:03发布访客分类主机资讯浏览1300
导读:1. 使用基础命令行工具实时监控 Ubuntu系统自带的基础命令行工具可快速查看Node.js日志,适合简单监控场景: tail -f:实时显示日志文件末尾新增内容,例如tail -f /var/log/nodejs/app.log(需替...

1. 使用基础命令行工具实时监控
Ubuntu系统自带的基础命令行工具可快速查看Node.js日志,适合简单监控场景:

  • tail -f:实时显示日志文件末尾新增内容,例如tail -f /var/log/nodejs/app.log(需替换为实际日志路径)。
  • grep:过滤特定关键词(如“error”),快速定位问题日志,例如tail -f /var/log/nodejs/app.log | grep 'error'
  • watch:定期执行命令并刷新输出(如每2秒查看一次日志变化),例如watch -n 2 tail -f /var/log/nodejs/app.log

2. 通过PM2进程管理器监控
PM2是Node.js生产环境常用进程管理工具,内置日志管理与监控功能:

  • 安装与启动:全局安装PM2后,用其启动Node.js应用并指定日志路径,例如pm2 start app.js --name my-app --log /var/log/nodejs/my-app.log
  • 查看日志:使用pm2 logs命令实时查看所有应用的日志;pm2 logs my-app查看特定应用的日志;pm2 logs --json以JSON格式输出日志(便于后续解析)。
  • 日志轮转:配置PM2自动切割日志(避免单个文件过大),例如pm2 set pm2-logrotate:max_size 10M(单文件最大10MB)、pm2 set pm2-logrotate:retain 7(保留最近7天日志)。

3. 利用Node.js日志库实现结构化记录
通过Winston、Bunyan等日志库,可实现结构化日志(如JSON格式)、多传输目的地(文件、控制台、数据库),提升日志可分析性:

  • Winston示例:安装npm install 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: 'error.log', level: 'error' }
    ), // 错误日志单独文件
        new winston.transports.File({
     filename: 'combined.log' }
    ) // 所有日志合并文件
      ]
    }
        );
        
    logger.info('Server started on port 3000');
        
    logger.error('Database connection failed');
        
    
  • Bunyan示例:安装npm install bunyan后,配置如下:
    const bunyan = require('bunyan');
    
    const logger = bunyan.createLogger({
    
      name: 'myapp',
      streams: [
        {
     level: 'info', stream: process.stdout }
    , // 输出到控制台
        {
     level: 'error', path: 'app-error.log' }
     // 错误日志写入文件
      ]
    }
        );
        
    logger.info('This is an info log.');
        
    logger.error('This is an error log.');
    
    

4. 借助系统日志工具journalctl
若Node.js应用以systemd服务运行(如通过systemctl start my-node-app启动),可使用journalctl查看系统级日志:

  • 查看所有日志journalctl(实时滚动显示)。
  • 查看特定服务日志journalctl -u my-node-app.service(替换为实际服务名)。
  • 过滤日志journalctl -u my-node-app.service | grep 'warning'(过滤“warning”关键词)。

5. 部署第三方集中式日志管理工具
对于生产环境,推荐使用ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog实现日志集中化、可视化与高级分析:

  • ELK Stack配置步骤
    1. 安装Elasticsearch(sudo apt install elasticsearch)、Logstash(sudo apt install logstash)、Kibana(sudo apt install kibana)。
    2. 配置Logstash收集Node.js日志:创建/etc/logstash/conf.d/nodejs.conf,内容如下:
      input {
      
        file {
          
          path =>
           "/var/log/nodejs/*.log" # 日志文件路径
          start_position =>
           "beginning"
          sincedb_path =>
       "/dev/null" # 测试时使用(避免记录读取位置)
        }
      
      }
      
      output {
      
        elasticsearch {
          
          hosts =>
           ["localhost:9200"] # Elasticsearch地址
          index =>
       "nodejs-logs-%{
      +YYYY.MM.dd}
      " # 按日期分索引
        }
      
        stdout {
           codec =>
       rubydebug }
       # 控制台输出(测试用)
      }
          
      
    3. 启动服务:sudo systemctl start elasticsearch logstash kibana
    4. 访问Kibana(http://服务器IP:5601),配置索引模式(如nodejs-logs-*),即可通过可视化界面搜索、分析日志。
  • 其他工具:也可使用Fluentd(替代Logstash的轻量级数据收集器)、Graylog(成熟的开源日志管理平台)等。

6. 日志监控最佳实践

  • 合理设置日志级别:开发环境用debug(详细信息),生产环境用info(常规运行信息)、warn(警告)、error(错误),避免无关日志占用空间。
  • 采用结构化日志:使用JSON格式记录日志(如包含timestamplevelmessagerequestId等字段),便于后续通过工具过滤、聚合分析。
  • 整合性能监控:结合Prometheus(收集指标)+ Grafana(可视化),监控应用性能(如请求延迟、错误率),与日志结合快速定位性能瓶颈。

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


若转载请注明出处: Node.js日志Ubuntu中怎样监控
本文地址: https://pptw.com/jishu/725230.html
如何在Ubuntu查看Node.js日志 如何通过日志分析Ubuntu JS应用行为

游客 回复需填写必要信息