商城首页欢迎来到中国正版软件门户

您的位置:首页 >如何在Ubuntu上监控Node.js日志异常

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

  发布于2026-06-16 阅读(0)

扫一扫,手机访问

说到在Ubuntu上监控Node.js日志异常,其实核心思路很清晰:把日志收集、实时监控、告警机制和可视化分析这几个环节串起来,就能搭出一套完整的异常发现体系。下面一步步拆解给大家看。

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

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

一切的前提是先让应用能输出日志,最好是结构化的那种,这样后续解析过滤都会方便很多。社区里最常用的日志库就是Winston,用法也很直接:

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' }),
    new winston.transports.File({ filename: 'logs/combined.log' })
  ]
});

try {
  // 业务代码
} catch (error) {
  logger.error(`Application Error: ${error.message}`, { stack: error.stack });
}

几个关键点值得留意:把日志级别设在error,能有效过滤掉大量无关信息;用JSON格式输出,是为了后续能被ELK、Prometheus这类工具轻松处理;另外,将error日志单独存一份,排查问题时能省去不少翻来翻去的功夫。

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

应用意外崩溃是日志异常的常见来源。进程管理器不光能自动重启,还能统一收集日志,PM2就是Node.js生态中非常顺手的选择:

# 全局安装
npm install pm2 -g

# 启动应用
pm2 start app.js --name "my-node-app"

# 实时查看日志
pm2 logs my-node-app

# 设置日志轮替
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

用PM2的好处很明显:应用挂了自动拉起,集群模式下所有实例的日志汇总在一起,还能通过pm2 monit看到CPU和内存的实时状态。对于单机部署来说,这已经够用了。

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

很多时候不需要搞太复杂,Ubuntu自带的命令行工具就能快速定位问题:

# 实时跟踪error.log
tail -f /path/to/your/app/logs/error.log

# 多关键词过滤
tail -f /path/to/your/app/logs/combined.log | grep -iE 'error|exception'

# PM2自带查看
pm2 logs my-node-app --lines 100
pm2 logs my-node-app | grep error

几个小技巧:tail -f配合管道过滤,可以秒级捕捉到异常信息;用grep -iE同时匹配多个关键词,覆盖面更广;PM2直接输出日志,省去手动找文件的麻烦。

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

生产环境里实例一多,逐个服务器看日志就不现实了。这时候ELK Stack就是经典方案。以Winston配合Elasticsearch为例:

  • 先安装Elasticsearch、Logstash、Kibana,Ubuntu下apt搞定。

  • 配置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" }
}
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}
  • 启动Logstash后,访问Kibana(http://localhost:5601),创建索引模式就能搜索和可视化error日志了。

集中化的核心价值在于:所有节点的日志汇聚一处,支持全文搜索和聚合分析,还能对接告警工具。一旦发现某类错误频发,可以第一时间定位根因。

5. 设置日志告警机制

监控的最终目的是在异常发生时第一时间收到通知。几种主流的做法:

  • PM2 Plus付费版本提供邮件或Slack告警,适合不想自己折腾的场景。

  • Prometheus+Grafana是不错的组合——在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']
});

try {
  // 业务代码
} catch (error) {
  errorCounter.inc({ type: 'database' });
  logger.error(error.message);
}
# prometheus.yml
scrape_configs:
  - job_name: 'nodejs'
    static_configs:
      - targets: ['localhost:9090']
  • 然后在Grafana里设置告警规则,比如nodejs_error_total > 10就触发邮件通知。

第三方工具如Uptime Kuma、Easy-Monitor也值得关注,它们支持多协议监控和自定义告警,对于不想自己搭整套方案的情况很实用。

把上面几个环节串起来,Ubuntu上Node.js日志异常的监控就能做到三位一体:及时发现、快速定位、自动响应。简单来说,日志是整个可观测性体系的基石,值得花时间打好底子。

本文转载于:https://www.yisu.com/ask/18963550.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注