首页主机资讯Ubuntu JS日志中如何提取关键信息

Ubuntu JS日志中如何提取关键信息

时间2026-01-19 21:31:05发布访客分类主机资讯浏览457
导读:Ubuntu 环境下从 JS 日志中提取关键信息的高效做法 一 定位日志与确认格式 常见路径与来源 应用自定义日志:项目目录下的 logs/ 或配置文件指定的路径(如 /var/log/yourapp/)。 Web 服务日志:如 /va...

Ubuntu 环境下从 JS 日志中提取关键信息的高效做法

一 定位日志与确认格式

  • 常见路径与来源
    • 应用自定义日志:项目目录下的 logs/ 或配置文件指定的路径(如 /var/log/yourapp/)。
    • Web 服务日志:如 /var/log/apache2/error.log/var/log/nginx/error.log
    • 系统日志:Node.js 若以服务运行,可用 journalctl -u yourapp.service 查看;通用系统日志在 /var/log/syslog
  • 快速确认
    • 列出可能目录:ls -l /var/log/yourapp/ /var/log/apache2/ /var/log/nginx/。
    • 查看服务输出:journalctl -u yourapp -f(实时跟踪)。
    • 粗略判断格式:head -n 20 app.log | less(-A 显示不可见字符,便于识别 JSON/多行堆栈)。

二 命令行快速提取

  • 实时过滤错误并高亮
    • tail -f app.log | grep --color=always -i “error|fail|exception|timeout”
  • 按时间窗口筛选(假设日志含 ISO8601 时间)
    • grep -E “2026-01-0[1-4]” app.log
  • 提取关键字段(按列)
    • 空格分隔日志:awk ‘{ print $1,$2,$7} ’ app.log | sort | uniq -c
  • 多行堆栈合并为单行(便于去重/统计)
    • awk ‘/^ERROR/{ if(p)print p; p=$0; next} p{ p=p"\n"$0} END{ if(p)print p} ’ app.log
  • 去重并计数
    • grep -o ‘ERR-[0-9]{ 4} ’ app.log | sort | uniq -c | sort -nr
  • 只保留包含堆栈的错误行
    • grep -A 20 -B 2 “at .(..js:[0-9]+:[0-9]+)” app.log
  • 安全相关线索
    • grep -i “unauthorized|attack|failed login” /var/log/apache2/error.log
  • 一行多工具串联示例
    • tail -n 10000 app.log | grep -E “error|exception” | awk ‘{ print $1,$2,$NF} ’ | sort | uniq -c | sort -nr | head 以上命令基于 grep/awk/sed/sort/uniq 等文本处理工具,适合纯文本日志的快速筛选与统计。

三 结构化日志解析 JSON

  • 安装 jq
    • sudo apt-get update & & sudo apt-get install -y jq
  • 常见提取
    • 提取所有错误级别及消息:jq -r ‘select(.level==“error”) | “(.time) (.msg)”’ app.log
    • 统计错误数量:jq -r ‘select(.level==“error”) | .msg’ app.log | sort | uniq -c | sort -nr
    • 按时间范围筛选(ISO8601 示例):jq -r ‘select(.time> =“2026-01-03T00:00:00Z” and .time< =“2026-01-04T00:00:00Z”) | .msg’ app.log
    • 提取堆栈并扁平化:jq -r ‘select(.stack) | .stack | join(“\n”)’ app.log
  • 多行 JSON(每行一个 JSON 对象)可直接用 jq;若日志把 JSON 打在多行,可先“压平”为单行再解析(如用 sed/awk 将换行替换为空格,仅在确认为合法单行 JSON 时使用)。

四 长期监控与可视化

  • 进程与日志聚合
    • 使用 PM2:pm2 start app.js --name api;pm2 logs api(实时查看聚合日志,便于多实例排查)。
  • 集中式日志平台
    • ELK Stack(Elasticsearch + Logstash + Kibana)Graylog:统一采集、检索、可视化与告警,适合多服务/多主机环境。
  • 指标与可视化
    • Prometheus + Grafana:暴露并可视化 HTTP 延迟、错误率、内存/CPU 等指标,与日志互补,便于定位趋势与瓶颈。

五 安全与合规提示

  • 搜索安全事件线索
    • grep -i “error|failed|unauthorized|attack” /var/log/apache2/error.log /var/log/syslog;必要时结合 fail2ban 等机制联动处置。
  • 合规与最小化
    • 日志可能包含 IP、令牌、邮箱 等敏感信息,分析前做脱敏(如 sed 替换),并遵循数据保护要求;对含敏感字段的日志设置更严格的访问控制与保留策略。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu JS日志中如何提取关键信息
本文地址: https://pptw.com/jishu/786241.html
Overlay文件系统在Linux中的应用场景 如何通过日志监控JS应用状态

游客 回复需填写必要信息