温馨提示×

怎样过滤linux异常日志

小樊
59
2026-10-05 09:59:10
栏目: 智能运维

在 Linux 中“过滤异常日志”通常分为 查看日志、筛选关键字、实时监控、按级别过滤、自动报警 几个层次。下面按实用场景给你一套常用方法。


一、最常用:用 grep 过滤异常关键字

1. 基本过滤

grep -i "error" /var/log/messages
grep -i "exception" /var/log/syslog

2. 忽略大小写 + 显示行号

grep -in "fail" /var/log/nginx/error.log

3. 多关键字过滤(OR)

grep -E "error|fail|exception|timeout" /var/log/app.log

4. 排除正常日志(NOT)

grep -v "INFO" /var/log/app.log

二、按日志级别过滤(推荐)

1. 使用 journalctl(systemd 系统)

# 只看错误和更严重日志
journalctl -p err

# 某服务
journalctl -u nginx -p err

# 最近 1 小时
journalctl --since "1 hour ago" -p warning

日志级别:

emerg > alert > crit > err > warning > notice > info > debug

三、实时监控异常日志

1. tail + grep

tail -f /var/log/app.log | grep -i "error"

2. 高亮异常(很实用)

tail -f /var/log/app.log | grep --color=auto -i "error|exception"

四、结构化日志(JSON / 应用日志)

示例(JSON 日志)

grep '"level":"error"' app.log

用 jq 精确过滤

cat app.log | jq 'select(.level=="error")'

五、日志分析工具(进阶)

1. awk 统计异常数量

awk '/ERROR/ {count++} END {print count}' app.log

2. 按时间统计错误

grep "ERROR" app.log | cut -d' ' -f1-2 | sort | uniq -c

六、自动化异常发现(生产推荐)

  • logrotate:防止日志爆炸
  • fail2ban:自动封 IP
  • Prometheus + Loki / ELK:
    • 实时检索
    • 异常告警
    • 可视化

七、常见异常日志位置速查

类型 路径
系统 /var/log/messages, /var/log/syslog
安全 /var/log/secure, /var/log/auth.log
Nginx /var/log/nginx/error.log
应用 自定义 path

如果你能告诉我:

  • 用的是 哪种系统(CentOS / Ubuntu)
  • 日志是 系统日志还是应用日志
  • 想要 实时看 / 统计 / 报警

我可以直接给你一套可复制的命令或脚本。

0 踩