Ubuntu JS日志中如何提取关键信息
导读: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
