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

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

时间2025-10-24 19:18:03发布访客分类主机资讯浏览825
导读:如何在Ubuntu上监控Node.js日志异常 在Ubuntu系统上监控Node.js日志异常,需通过日志收集配置、实时监控工具、告警机制和可视化分析组合实现,以下是具体步骤: 1. 配置Node.js应用日志记录 首先确保应用能输出结构化...

如何在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 }
    );
 // 记录错误信息和堆栈
}

关键点

  • 设置level: 'error'聚焦异常日志,避免无关信息干扰;
  • 使用json()格式让日志更易被ELK、Prometheus等工具处理;
  • 将error日志单独存储(如error.log),便于快速定位问题。

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天日志

优势

  • 自动重启崩溃的应用(--watch模式可监控文件变化并重启);
  • 聚合所有实例的日志(适合集群部署);
  • 提供pm2 monit命令实时监控CPU、内存等指标。

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日志

技巧

  • 使用tail -f实时跟踪日志变化;
  • grep -iE过滤多个关键词(如errorexceptionfail);
  • 通过pm2 logs直接查看PM2管理的应用日志,无需手动找文件。

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

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

  • ELK Stack配置示例(以Winston+Elasticsearch为例):

    1. 安装Elasticsearch、Logstash、Kibana(Ubuntu下通过apt安装);
    2. 配置Logstash解析Node.js日志(logstash.conf):
      input {
      
        file {
          
          path =>
           "/path/to/your/app/logs/error.log"
          start_position =>
           "beginning"
          sincedb_path =>
       "/dev/null"
        }
      
      }
      
      filter {
      
        json {
           source =>
       "message" }
       # 解析Winston的JSON格式日志
      }
      
      output {
      
        elasticsearch {
           hosts =>
       ["localhost:9200"] }
       # 发送到Elasticsearch
        stdout {
           codec =>
       rubydebug }
       # 控制台输出(调试用)
      }
          
      
    3. 启动Logstash并访问Kibana(http://localhost:5601),创建索引模式后即可搜索、可视化error日志。
  • 优势

    • 集中存储所有节点的日志(适合分布式系统);
    • 支持全文搜索、聚合分析(如统计某类错误的出现频率);
    • 可对接告警工具(如Elasticsearch的Watcher、Kibana的Alerting)。

5. 设置日志告警机制

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

  • PM2内置告警:通过pm2 plus(付费)或pm2-webshell设置邮件、Slack通知;

  • Prometheus+Grafana

    1. 安装Prometheus(监控指标)和Grafana(可视化);
    2. 在Node.js应用中集成prom-client库,暴露错误计数指标:
      const client = require('prom-client');
      
      const errorCounter = new client.Counter({
      
        name: 'nodejs_error_total',
        help: 'Total number of Node.js errors',
        labelNames: ['type'] // 如'5xx'、'database'
      }
          );
      
      
      // 示例:记录错误时增加计数
      try {
      
        // 业务代码
      }
       catch (error) {
      
        errorCounter.inc({
       type: 'database' }
          );
           // 标记错误类型
        logger.error(error.message);
      
      }
          
      
    3. 配置Prometheus抓取Node.js应用的指标(prometheus.yml):
      scrape_configs:
        - job_name: 'nodejs'
          static_configs:
            - targets: ['localhost:9090'] # Node.js应用的metrics端口
      
    4. 在Grafana中创建仪表盘,设置告警规则(如nodejs_error_total > 10时触发邮件通知)。
  • 第三方工具:如Uptime Kuma(开源)、Easy-Monitor(私有化部署),支持多协议监控(HTTP、TCP)和自定义告警。

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

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


若转载请注明出处: 如何在Ubuntu上监控Node.js日志异常
本文地址: https://pptw.com/jishu/734853.html
如何在Linux下配置Overlay Node.js在Ubuntu上的日志格式化技巧

游客 回复需填写必要信息