1. 定位JS日志位置
首先需明确Ubuntu系统中JS日志的存储路径,常见位置包括:
/var/log/
(如Nginx、Apache等服务的JS相关日志可能存放在子目录中);logs/
文件夹;journalctl
命令查看systemd管理的JS应用日志(如Node.js服务)。2. 使用journalctl提取JS日志性能数据
journalctl
是Ubuntu下管理systemd日志的核心工具,可通过以下命令过滤JS应用日志:
your-js-service
),使用journalctl -u your-js-service
查看其所有日志;--since
和--until
参数指定时间段,如journalctl --since "2025-10-01" --until "2025-10-17"
获取近半个月的日志;-p
参数筛选错误级别日志(如journalctl -p err
),或通过grep
查找关键词(如journalctl | grep "response time" | grep "slow"
),快速定位性能异常条目。3. 利用日志分析工具提取性能指标
通过文本处理工具从日志中提取关键性能指标(如响应时间、错误率、资源消耗):
grep "response time" /var/log/js-app.log
提取所有包含响应时间的日志行;awk '{print $6}' /var/log/js-app.log | grep -Eo '[0-9]+' | sort | uniq -c
(假设第6列为响应时间),统计不同响应时间的出现次数;sed '/DEBUG/d' /var/log/js-app.log
删除调试日志,减少干扰。4. 可视化日志数据以监控性能趋势
将日志数据导入可视化工具,生成仪表盘直观展示性能变化:
5. 配置性能监控警报
设置自动警报机制,及时通知性能异常:
prom-client
库在JS应用中暴露性能指标(如/metrics
端点),Prometheus定时抓取数据,Grafana设置警报规则(如响应时间超过500ms时触发邮件通知);6. 结合系统工具监控底层资源
JS应用性能受底层系统资源影响,需结合Ubuntu系统工具监控:
top -p $(pgrep -f "node app.js")
);vmstat 1
每秒刷新一次内存使用情况),判断是否因资源不足导致性能瓶颈;pm2 monit
命令查看实时CPU、内存、响应时间等指标。7. 优化JS日志记录以支持性能监控
确保日志记录的结构化和完整性,便于后续分析:
winston
(支持JSON格式),记录关键性能指标(如请求开始/结束时间、数据库查询时间),示例代码:const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'performance.log' }), new winston.transports.Console() ] }); logger.info('Request started', { requestId: '123', timestamp: Date.now() }); // 应用逻辑... logger.info('Request completed', { requestId: '123', duration: 150 }); // 记录响应时间
info
或warn
级别,避免过多debug
日志影响性能;logrotate
配置自动压缩旧日志(如/etc/logrotate.d/js-app
),防止日志文件过大占用磁盘空间。