Node.js日志Ubuntu中怎样监控
导读:1. 使用基础命令行工具实时监控 Ubuntu系统自带的基础命令行工具可快速查看Node.js日志,适合简单监控场景: tail -f:实时显示日志文件末尾新增内容,例如tail -f /var/log/nodejs/app.log(需替...
1. 使用基础命令行工具实时监控
Ubuntu系统自带的基础命令行工具可快速查看Node.js日志,适合简单监控场景:
- tail -f:实时显示日志文件末尾新增内容,例如
tail -f /var/log/nodejs/app.log
(需替换为实际日志路径)。 - grep:过滤特定关键词(如“error”),快速定位问题日志,例如
tail -f /var/log/nodejs/app.log | grep 'error'
。 - watch:定期执行命令并刷新输出(如每2秒查看一次日志变化),例如
watch -n 2 tail -f /var/log/nodejs/app.log
。
2. 通过PM2进程管理器监控
PM2是Node.js生产环境常用进程管理工具,内置日志管理与监控功能:
- 安装与启动:全局安装PM2后,用其启动Node.js应用并指定日志路径,例如
pm2 start app.js --name my-app --log /var/log/nodejs/my-app.log
。 - 查看日志:使用
pm2 logs
命令实时查看所有应用的日志;pm2 logs my-app
查看特定应用的日志;pm2 logs --json
以JSON格式输出日志(便于后续解析)。 - 日志轮转:配置PM2自动切割日志(避免单个文件过大),例如
pm2 set pm2-logrotate:max_size 10M
(单文件最大10MB)、pm2 set pm2-logrotate:retain 7
(保留最近7天日志)。
3. 利用Node.js日志库实现结构化记录
通过Winston、Bunyan等日志库,可实现结构化日志(如JSON格式)、多传输目的地(文件、控制台、数据库),提升日志可分析性:
- Winston示例:安装
npm install 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: 'error.log', level: 'error' } ), // 错误日志单独文件 new winston.transports.File({ filename: 'combined.log' } ) // 所有日志合并文件 ] } ); logger.info('Server started on port 3000'); logger.error('Database connection failed');
- 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.');
4. 借助系统日志工具journalctl
若Node.js应用以systemd服务运行(如通过systemctl start my-node-app
启动),可使用journalctl
查看系统级日志:
- 查看所有日志:
journalctl
(实时滚动显示)。 - 查看特定服务日志:
journalctl -u my-node-app.service
(替换为实际服务名)。 - 过滤日志:
journalctl -u my-node-app.service | grep 'warning'
(过滤“warning”关键词)。
5. 部署第三方集中式日志管理工具
对于生产环境,推荐使用ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog实现日志集中化、可视化与高级分析:
- ELK Stack配置步骤:
- 安装Elasticsearch(
sudo apt install elasticsearch
)、Logstash(sudo apt install logstash
)、Kibana(sudo apt install kibana
)。 - 配置Logstash收集Node.js日志:创建
/etc/logstash/conf.d/nodejs.conf
,内容如下:input { file { path => "/var/log/nodejs/*.log" # 日志文件路径 start_position => "beginning" sincedb_path => "/dev/null" # 测试时使用(避免记录读取位置) } } output { elasticsearch { hosts => ["localhost:9200"] # Elasticsearch地址 index => "nodejs-logs-%{ +YYYY.MM.dd} " # 按日期分索引 } stdout { codec => rubydebug } # 控制台输出(测试用) }
- 启动服务:
sudo systemctl start elasticsearch logstash kibana
。 - 访问Kibana(
http://服务器IP:5601
),配置索引模式(如nodejs-logs-*
),即可通过可视化界面搜索、分析日志。
- 安装Elasticsearch(
- 其他工具:也可使用Fluentd(替代Logstash的轻量级数据收集器)、Graylog(成熟的开源日志管理平台)等。
6. 日志监控最佳实践
- 合理设置日志级别:开发环境用
debug
(详细信息),生产环境用info
(常规运行信息)、warn
(警告)、error
(错误),避免无关日志占用空间。 - 采用结构化日志:使用JSON格式记录日志(如包含
timestamp
、level
、message
、requestId
等字段),便于后续通过工具过滤、聚合分析。 - 整合性能监控:结合Prometheus(收集指标)+ Grafana(可视化),监控应用性能(如请求延迟、错误率),与日志结合快速定位性能瓶颈。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js日志Ubuntu中怎样监控
本文地址: https://pptw.com/jishu/725230.html