首页主机资讯如何在Ubuntu监控Node.js日志

如何在Ubuntu监控Node.js日志

时间2025-10-14 00:37:03发布访客分类主机资讯浏览763
导读:如何在Ubuntu上监控Node.js日志 在Ubuntu系统中,监控Node.js日志可通过命令行工具、进程管理器或集中式日志管理方案实现,以下是具体方法: 1. 基础命令行工具监控 1.1 使用tail实时查看日志文件 若Node.js...

如何在Ubuntu上监控Node.js日志

在Ubuntu系统中,监控Node.js日志可通过命令行工具进程管理器集中式日志管理方案实现,以下是具体方法:

1. 基础命令行工具监控

1.1 使用tail实时查看日志文件

若Node.js应用将日志输出到文件(如/var/log/myapp.log),可通过tail -f命令实时跟踪日志更新:

tail -f /var/log/myapp.log

该命令会持续显示日志文件的最后几行,新内容会实时追加显示。适用于快速查看实时日志的场景。

1.2 使用journalctl查看系统日志

若Node.js应用以系统服务运行(如通过systemd管理),可使用journalctl查看其日志:

journalctl -u your-nodejs-service-name -f

其中your-nodejs-service-name是服务的名称(启动时通过--name指定或服务文件中的Name字段)。-f参数表示实时跟踪日志。适用于系统级日志管理。

2. 使用PM2进程管理器监控

PM2是Node.js常用的进程管理工具,内置日志管理和监控功能:

2.1 安装与启动

npm install pm2 -g  # 全局安装PM2
pm2 start app.js --name my-app  # 启动应用并命名为"my-app"

2.2 查看日志

pm2 logs my-app  # 查看"my-app"的实时日志(合并stdout和stderr)
pm2 logs my-app --lines 50  # 查看最后50行日志

2.3 日志轮转

PM2默认自动轮转日志(保留7天,每文件最大10MB),也可手动配置:

pm2 set pm2-logrotate:max_size 10M  # 单个日志文件最大10MB
pm2 set pm2-logrotate:retain 7      # 保留最近7天日志

PM2会将日志存储在~/.pm2/logs/目录下(文件名为应用名-out.log应用名-err.log)。适用于生产环境的进程管理和日志监控。

3. 配置日志轮转(避免日志膨胀)

当日志文件过大时,需通过logrotate工具定期轮转、压缩和清理日志:

3.1 安装logrotate

sudo apt-get install logrotate

3.2 创建配置文件

/etc/logrotate.d/目录下创建my-app配置文件:

sudo nano /etc/logrotate.d/my-app

添加以下内容(以/var/log/myapp.log为例):

/var/log/myapp.log {

    daily           # 每天轮转
    rotate 7        # 保留7天日志
    compress        # 压缩旧日志(如.gz格式)
    missingok       # 若日志不存在也不报错
    notifempty      # 若日志为空则不轮转
    create 0640 root adm  # 新日志文件权限和所有者
}

3.3 测试配置

sudo logrotate -f /etc/logrotate.d/my-app  # 强制立即轮转

适用于需要自动化管理日志大小的场景。

4. 使用第三方日志管理工具(集中式监控)

对于分布式或大规模应用,建议使用ELK Stack(Elasticsearch+Logstash+Kibana)或Fluentd实现集中式日志收集、分析和可视化。

4.1 ELK Stack配置

  • 安装ELK
    sudo apt-get install elasticsearch logstash kibana
    
  • 配置Logstash
    创建/etc/logstash/conf.d/nodejs.conf文件,内容如下:
    input {
    
      file {
        
        path =>
         "/var/log/myapp.log"
        start_position =>
     "beginning"
      }
    
    }
    
    output {
    
      elasticsearch {
        
        hosts =>
         ["localhost:9200"]
        index =>
     "nodejs-logs-%{
    +YYYY.MM.dd}
    "
      }
    
    }
        
    
  • 启动服务
    sudo systemctl start elasticsearch logstash kibana
    
  • 访问Kibana
    浏览器打开http://服务器IP:5601,配置索引模式(如nodejs-logs-*)即可可视化日志。

4.2 Fluentd配置

  • 安装Fluentd
    sudo apt-get install fluentd
    
  • 配置Fluentd
    编辑/etc/td-agent/td-agent.conf文件:
    source @type tail
    path /var/log/myapp.log
    pos_file /var/log/td-agent/nodejs.log.pos
    tag nodejs
    parse @type none
    
    match nodejs
    @type elasticsearch
    host localhost
    port 9200
    logstash_format true
    flush_interval 10s
    
  • 启动Fluentd
    sudo systemctl start td-agent
    

适用于需要高吞吐量和灵活集成的场景。

5. 使用日志库增强日志功能

通过WinstonBunyan等日志库,可实现日志分级(info/error/debug)、多输出目标(文件/控制台/远程服务器)和格式化(JSON/文本):

5.1 Winston示例

npm install winston
const winston = require('winston');

const logger = winston.createLogger({

  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({
 filename: 'error.log', level: 'error' }
),
    new winston.transports.File({
 filename: 'combined.log' }
),
    new winston.transports.Console()
  ]
}
    );
    
logger.info('This is an info log');
    
logger.error('This is an error log');
    

5.2 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');
    

适用于需要结构化日志和高级功能的场景。

以上方法可根据需求选择:基础监控用tailjournalctl,生产环境用PM2,大规模应用用ELK/Fluentd,复杂日志需求用Winston/Bunyan。

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


若转载请注明出处: 如何在Ubuntu监控Node.js日志
本文地址: https://pptw.com/jishu/725330.html
Node.js日志Ubuntu里如何告警 Ubuntu下Node.js日志如何优化

游客 回复需填写必要信息