温馨提示×

Ubuntu JS日志分析技巧有哪些

小樊
31
2025-12-21 20:16:00
栏目: 编程语言

Ubuntu 环境下 JavaScript 日志分析实用技巧

一 定位与收集日志

  • 明确日志来源:前端 JS 优先用浏览器开发者工具 Console/Network;Node.js 服务看应用日志与服务管理器日志;系统层面看 journalctl/var/log
  • 常见路径与命令一览:
    来源 典型位置或命令 用途
    前端 JS 浏览器开发者工具 Console/Network 运行时错误、网络请求状态
    Node.js 应用日志 应用目录日志文件、journalctl -u your-service 业务日志、未捕获异常
    PM2 管理 pm2 logs your-app、pm2 monit 多实例日志、资源监控
    系统日志 /var/log/syslogjournalctl -f 服务启动、崩溃、内核消息
    Web 服务器 /var/log/nginx/error.log/var/log/apache2/error.log 反向代理/静态资源错误
    认证与安全 /var/log/auth.log 登录失败、可疑访问
  • 安装常用解析工具:sudo apt-get install jq(JSON 解析)。

二 命令行快速筛选与统计

  • 实时与回溯:tail -f app.log;journalctl -u your-service --since “10 minutes ago”。
  • 关键词与级别:grep -i “errorapp.log;pm2 logs your-app --lines 50 | grep WARN
  • 字段提取与统计:
    • 提取 JSON 字段:jq ‘.error’ app.log;按时间窗口统计错误数:jq -r ‘select(.level==“error”) | .ts’ app.log | sort | uniq -c。
    • 文本列处理:awk ‘{print $1,$2}’ app.log;按日期计数:awk ‘/Jun 17/ {count++} END {print count}’ /var/log/syslog。
  • 多文件与压缩:zgrep “timeoutapp.log.1.gz app.log。

三 结构化日志与 Node.js 专项

  • 使用结构化日志库:如 winston/bunyan,输出 JSON,便于 jq 检索与聚合。
  • 常见 Node.js 警告与处置:
    • DeprecationWarning:替换过时 API(如 Buffer() → Buffer.alloc()),升级 Node 与依赖。
    • UnhandledPromiseRejectionWarning:为 Promise 加 .catch() 或 try/catch,并监听 process.on(‘unhandledRejection’)。
    • MaxListenersExceededWarning:避免重复添加监听器,必要时 emitter.setMaxListeners()。
    • 内存不足:FATAL ERROR: heap out of memory,短期可通过 node --max-old-space-size=4096 提升上限,长期需排查泄漏(如 clinic.js)。

四 安全分析与告警

  • 关键词检索:grep -i “error|failed|unauthorized|attack/var/log/syslog;结合应用日志定位来源 IP、UA、URL。
  • 认证安全:分析 /var/log/auth.log 的 Failed password、invalid user 等,识别暴力破解。
  • 持续监控与报表:部署 Logwatch/ELK Stack/Graylog,对错误率、4xx/5xx、登录失败做可视化与阈值告警。

五 可视化与长期治理

  • 集中化方案:搭建 ELK(Elasticsearch/Logstash/Kibana)或 Graylog,统一采集、索引、搜索与仪表盘。
  • 日志生命周期:配置 logrotate 做按日/按大小轮转、压缩与保留,避免磁盘被占满。
  • 排错流程建议:先界定问题 → 查系统/服务/应用日志 → 校验时间戳与上下文 → 复现与修复 → 回归验证与持续监控;对含敏感信息的日志做脱敏与最小化保留。

0