Node.js应用在Ubuntu的日志监控技巧
导读:Node.js 应用在 Ubuntu 的日志监控技巧 一 日志采集与结构化 使用成熟的日志库输出结构化日志,便于检索与聚合。示例(winston):const winston = require('winston' ; const log...
Node.js 应用在 Ubuntu 的日志监控技巧
一 日志采集与结构化
- 使用成熟的日志库输出结构化日志,便于检索与聚合。示例(winston):
建议始终使用明确的日志级别(如 error、warn、info),并尽量输出结构化字段(如 requestId、userId、path)。const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' } ), new winston.transports.File({ filename: 'combined.log' } ) ] } ); logger.info('Server started', { port: 3000 } ); logger.error('DB connect failed', { err: err.message } );
二 实时查看与多文件监控
- 直接跟踪日志文件:
tail -f /var/log/myapp.log - 同时查看多个日志并高亮:
sudo apt-get install multitail multitail /var/log/myapp.log /var/log/myapp-error.log - 使用进程管理器 PM2 聚合与查看日志:
以上方式适合本地排查与临时观测,便于快速定位问题。sudo npm install -g pm2 pm2 start app.js --name my-app pm2 logs my-app
三 日志轮转与保留策略
- 使用 logrotate 避免日志无限增长(创建文件 /etc/logrotate.d/nodejs):
含义:按天轮转、保留最近 7 天、压缩旧日志、自动创建新文件并设置权限。若使用 PM2,也可启用内置日志轮转(pm2 logrotate)。/path/to/your/nodejs/app/logs/*.log { daily missingok rotate 7 compress notifempty create 0640 root adm }
四 集中化与系统日志集成
- 输出到系统日志(journald),统一由 journalctl 查询:
配置示例:sudo npm install winston winston-syslog
查询:const winston = require('winston'); const SyslogTransport = require('winston-syslog').SyslogTransport; const logger = winston.createLogger({ transports: [ new SyslogTransport({ host: 'localhost', app_name: 'my-node-app', facility: 'local0' } ) ] } ); logger.info('Hello, journald');journalctl -u my-node-app -f - 集中式日志平台:小规模可用 ELK Stack(Elasticsearch、Logstash、Kibana) 或 EFK(Elasticsearch、Fluentd、Kibana);也可对接 Graylog、Splunk 或云日志服务(如 Datadog、New Relic、Loggly)实现跨主机聚合、检索与告警。
五 告警与可视化实践
- 指标与可视化:在 Node.js 中引入 prom-client 暴露指标,配合 Prometheus 抓取、Grafana 构建仪表盘,监控 请求耗时、错误率、内存/CPU 等;日志侧建议对 ERROR 关键字设置实时告警(如通过 journald 或集中式平台的告警规则)。
- 快速检索示例:
通过结构化日志与时间字段,可快速构建错误趋势与异常定位面板。# 过滤错误日志 grep -i 'ERROR' /var/log/myapp.log # 统计每分钟错误数(按日志时间字段) grep -i 'ERROR' /var/log/myapp.log | awk -F: '{ print $1":"$2} ' | sort | uniq -c
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js应用在Ubuntu的日志监控技巧
本文地址: https://pptw.com/jishu/768299.html
