ubuntu

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

小樊
43
2025-10-24 08:50:59
栏目: 编程语言

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

在Ubuntu系统上监控Node.js日志异常,需通过日志收集配置实时监控工具告警机制可视化分析组合实现,以下是具体步骤:

1. 配置Node.js应用日志记录

首先确保应用能输出结构化日志(便于后续过滤和分析),推荐使用Winston(最流行的Node.js日志库):

const winston = require('winston');
const logger = winston.createLogger({
  level: 'error', // 仅记录error及以上级别日志(减少噪音)
  format: winston.format.json(), // 结构化日志(方便工具解析)
  transports: [
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }), // 单独存储error日志
    new winston.transports.File({ filename: 'logs/combined.log' }) // 所有日志汇总
  ]
});

// 示例:捕获异常并记录
try {
  // 业务代码(如数据库查询、API调用)
} catch (error) {
  logger.error(`Application Error: ${error.message}`, { stack: error.stack }); // 记录错误信息和堆栈
}

关键点

2. 使用进程管理器监控应用状态

进程管理器可自动重启崩溃的应用,并提供日志聚合功能,推荐PM2(Node.js专用):

# 全局安装PM2
npm install pm2 -g

# 启动应用并命名(方便管理)
pm2 start app.js --name "my-node-app"

# 查看实时日志(包含error日志)
pm2 logs my-node-app

# 设置日志轮替(避免日志文件过大)
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M # 单个日志文件最大10MB
pm2 set pm2-logrotate:retain 7    # 保留最近7天日志

优势

3. 实时查看与过滤异常日志

通过Ubuntu命令行工具快速定位error日志:

# 实时查看error.log文件的新增内容
tail -f /path/to/your/app/logs/error.log

# 实时过滤包含"error"或"exception"的日志行(不区分大小写)
tail -f /path/to/your/app/logs/combined.log | grep -iE 'error|exception'

# 结合pm2查看特定应用的error日志
pm2 logs my-node-app --lines 100 # 查看最近100行日志
pm2 logs my-node-app | grep error # 过滤error日志

技巧

4. 集中化日志管理与分析

对于生产环境,建议使用ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog实现日志集中化:

5. 设置日志告警机制

当出现严重异常(如5xx错误、数据库连接失败)时,及时通知运维人员,推荐以下方式:

通过以上步骤,可实现Ubuntu上Node.js日志异常的全面监控快速定位及时响应,保障应用稳定性。

0
看了该问题的人还看了