如何通过Ubuntu Node.js日志监控应用
导读:通过Ubuntu监控Node.js应用日志的方法 1. 使用PM2进行进程管理与日志监控 PM2是Node.js常用的进程管理工具,内置日志管理功能,适合生产环境使用。  安装PM2:全局安装PM2,用于管理Node.js应用进程。npm...
通过Ubuntu监控Node.js应用日志的方法
1. 使用PM2进行进程管理与日志监控
PM2是Node.js常用的进程管理工具,内置日志管理功能,适合生产环境使用。
- 安装PM2:全局安装PM2,用于管理Node.js应用进程。
npm install pm2 -g - 启动应用并记录日志:通过PM2启动应用,指定应用名称及日志文件路径(默认日志路径为
~/.pm2/logs/)。pm2 start app.js --name "my-node-app" --log /var/log/my-node-app.log - 实时查看日志:使用
pm2 logs命令实时查看所有应用的日志,或指定应用名称查看单个应用日志(如pm2 logs my-node-app)。 - 日志轮转配置:避免日志文件过大,设置日志轮转规则(最大10MB,保留7天)。
pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 7 
2. 基础命令行工具实时监控
Ubuntu自带的命令行工具可快速查看和过滤日志,适合简单场景。
- 实时查看日志末尾:使用
tail -f命令实时显示日志文件的新增内容(如tail -f /var/log/my-node-app.log)。 - 过滤关键词:结合
grep命令过滤特定日志(如错误日志),提升排查效率。tail -f /var/log/my-node-app.log | grep 'error' - 分页查看实时日志:用
less命令结合tail -f,支持翻页查看(如tail -f /var/log/my-node-app.log | less)。 - 定期刷新查看:使用
watch命令每隔1秒刷新日志文件(如watch -n 1 tail -f /var/log/my-node-app.log)。 
3. 配置Logrotate进行日志轮转
Logrotate是Ubuntu系统自带的日志管理工具,可自动切割、压缩和删除旧日志,防止磁盘空间耗尽。
- 安装Logrotate:若未安装,通过以下命令安装。
sudo apt-get install logrotate - 创建配置文件:在
/etc/logrotate.d/目录下创建应用专属配置文件(如my-node-app)。sudo nano /etc/logrotate.d/my-node-app - 配置规则:添加以下内容,设置每日切割、保留7天、压缩旧日志。
/var/log/my-node-app.log { daily missingok rotate 7 compress notifempty create 640 root adm } - 测试配置:手动运行Logrotate,验证配置是否生效。
sudo logrotate -f /etc/logrotate.d/my-node-app 
4. 使用Winston/Bunyan进行结构化日志记录
Winston和Bunyan是Node.js专业的日志库,支持结构化日志(如JSON格式),便于后续分析和集成。
- Winston配置示例:安装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: 'logs/error.log', level: 'error' } ), new winston.transports.File({ filename: 'logs/combined.log' } ) ] } ); logger.info('Application started on port 3000'); - Bunyan配置示例:安装Bunyan后,配置控制台和文件输出(日志格式为JSON)。
const bunyan = require('bunyan'); const logger = bunyan.createLogger({ name: 'my-node-app', streams: [ { level: 'info', stream: process.stdout } , { level: 'error', path: 'logs/app-error.log' } ] } ); logger.info('User logged in', { userId: 123 } ); 
5. 集成ELK Stack实现集中式日志管理
ELK(Elasticsearch+Logstash+Kibana)是强大的集中式日志管理方案,适合大规模应用。
- 安装ELK组件:通过APT安装Elasticsearch、Logstash、Kibana。
sudo apt-get update sudo apt-get install elasticsearch logstash kibana - 配置Logstash收集日志:创建Logstash配置文件(如
/etc/logstash/conf.d/nodejs.conf),设置文件输入、过滤(可选)和Elasticsearch输出。input { file { path => "/var/log/my-node-app.log" start_position => "beginning" } } output { elasticsearch { hosts => ["localhost:9200"] index => "nodejs-logs-%{ +YYYY.MM.dd} " } } - 启动服务并配置Kibana:启动Logstash和Kibana,配置Kibana连接Elasticsearch(修改
/etc/kibana/kibana.yml中的elasticsearch.hosts),通过浏览器访问http://< server-ip> :5601,创建索引模式并可视化日志。 
6. 使用第三方日志管理服务
若不想自建日志系统,可选择第三方服务(如Loggly、Datadog、Papertrail),提供日志收集、搜索、报警等功能,简化运维流程。
- Loggly:通过npm包
winston-loggly-bulk将日志发送到Loggly,配置报警规则。 - Datadog:安装Datadog Agent,集成Node.js应用,监控日志和应用性能。
 - Papertrail:通过syslog或API接收日志,支持实时搜索和邮件报警。
 
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Ubuntu Node.js日志监控应用
本文地址: https://pptw.com/jishu/741850.html
