温馨提示×

如何过滤Linux关键日志

小樊
49
2026-08-17 11:00:12
栏目: 智能运维

过滤 Linux 关键日志,通常要结合日志来源、时间范围、关键字、级别等因素。下面按实战场景给你一套常用方法,从简单到进阶。


一、常见 Linux 日志位置

/var/log/messages      # 系统通用日志(RHEL/CentOS)
/var/log/syslog        # 系统日志(Ubuntu/Debian)
/var/log/secure        # 安全、SSH、登录(RHEL)
/var/log/auth.log      # 认证日志(Ubuntu)
/var/log/dmesg         # 内核日志
/var/log/nginx/        # Nginx
/var/log/mysql/        # MySQL
/var/log/audit/audit.log  # 审计日志

二、最基础:用 grep 过滤关键日志

1️⃣ 按关键字过滤

grep "error" /var/log/messages
grep -i "failed" /var/log/secure

2️⃣ 过滤多个关键字(OR)

grep -E "error|fail|exception" /var/log/messages

3️⃣ 排除某些日志(NOT)

grep -v "cron" /var/log/messages

4️⃣ 显示行号

grep -n "error" /var/log/messages

三、时间范围过滤(非常关键)

1️⃣ 按今天日志

grep "$(date +%b\ %e)" /var/log/messages

2️⃣ 指定时间段(如 10:00 - 12:00)

sed -n '/Oct 10 10:/,/Oct 10 12:/p' /var/log/messages

3️⃣ journalctl(systemd 系统推荐)

journalctl -p err        # 错误级别
journalctl --since "2025-01-01" --until "2025-01-10"
journalctl -u sshd

四、按日志级别过滤(重点)

journalctl 日志级别

emerg
alert
crit
err
warning
notice
info
debug

示例:

journalctl -p err..alert

五、实时过滤关键日志(排错神器)

1️⃣ tail + grep

tail -f /var/log/messages | grep -i error

2️⃣ 多关键字高亮

tail -f /var/log/messages | grep --color -E "error|fail|warn"

六、结构化日志过滤(进阶)

1️⃣ awk 按列过滤

awk '$3 ~ /error/ {print}' /var/log/messages

2️⃣ 统计错误次数

grep "error" /var/log/messages | wc -l

七、过滤 SSH / 登录安全日志(非常常用)

1️⃣ 登录失败

grep "Failed password" /var/log/secure

2️⃣ 暴力破解分析

grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr

八、生产环境推荐组合

系统异常

journalctl -p err -x

服务异常

journalctl -u nginx --since "10 min ago"

安全审计

grep -E "Failed|Invalid|error" /var/log/secure

九、自动化建议(运维必备)

  • logrotate 防止日志过大
  • 关键日志接入:
    • ELK / Grafana Loki
    • rsyslog → 远程服务器
  • 设置告警规则(error / failed / OOM)

如果你愿意,我可以: ✅ 给你一条命令直接过滤“真正关键”的日志
✅ 按 CentOS / Ubuntu / Docker / K8s 定制
✅ 帮你写 日志过滤脚本

你现在用的是哪种系统?主要想过滤哪类日志?

0