溫馨提示×

Node.js日志Ubuntu中怎樣監控

小樊
47
2025-10-13 14:01:26
欄目: 編程語言

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格式記錄日志(如包含timestamp、level、message、requestId等字段),便于后續通過工具過濾、聚合分析。
  • 整合性能監控:結合Prometheus(收集指標)+ Grafana(可視化),監控應用性能(如請求延遲、錯誤率),與日志結合快速定位性能瓶頸。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女