Linux日志怎么分析_最佳实践总结助你快速突破【教程】


Linux日志分析需聚焦时间、服务、错误模式三要素,通过journalctl、grep、tail等命令快速过滤关联,结合典型错误指纹与轮转机制高效定位问题。

Linux日志怎么分析_最佳实践总结助你快速突破【教程】

Linux日志分析不是“翻文件”,而是带着问题找线索——核心是定位时间、服务、错误模式三要素,再用工具快速过滤和关联。

盯紧关键日志路径和默认轮转机制

系统日志大多集中在 /var/log/ 下,但不同服务存放位置有差异:

  • /var/log/messages:通用系统消息(RHEL/CentOS);Ubuntu/Debian 对应的是 /var/log/syslog
  • /var/log/auth.log:登录、sudo、SSH 认证相关(Debian系);RHEL系在 /var/log/secure
  • /var/log/kern.log:内核级事件(如驱动加载、OOM、硬件报错)
  • /var/log/journal/:systemd-journald 的二进制日志,需用 journalctl 查看
  • 应用日志通常由服务自定义,比如 Nginx 在 /var/log/nginx/,MySQL 在 /var/log/mysql/ 或配置中指定

注意:日志会按大小或时间轮转(logrotate 管理),旧日志带 .1、.2.gz 后缀。查历史问题别只看当前文件,先 ls -lt /var/log/*.log* 看最新归档。

用对命令,5秒筛出有效信息

别从头 cat,先用组合命令缩小范围:

  • 查某时段错误:journalctl –since “2024-05-20 14:00” –until “2024-05-20 14:30” -p err
  • 实时跟踪新日志:tail -f /var/log/syslog | grep -i “failed|denied|timeout”
  • 统计高频错误关键词:grep “Connection refused” /var/log/syslog | awk ‘{print $1,$2,$3,$9}’ | sort | uniq -c | sort -nr | head -10
  • 关联进程与日志:用 ps aux | grep nginx 找 PID,再 grep “PID” /var/log/nginx/error.log

小技巧:加 –no-pager 避免 journalctl 分页阻断管道;用 less +G /var/log/messages 直接跳到末尾再搜索。

识别典型错误模式,少走排查弯路

很多问题有固定“指纹”,见了就能快速判断方向:

  • “Permission denied” + “open(/path/file)”:不是权限没设,很可能是 SELinux 拦截(ausearch -m avc -ts recent 查 AVC 拒绝记录)
  • “Out of memory: Kill process”:立刻看 dmesg -T | tail -20,确认是否 OOM killer 干的,再查内存使用趋势(free -h; top -o %MEM
  • “Connection refused” on port X:先 ss -tuln | grep :X端口是否真监听;再 systemctl status servicename 确认服务状态
  • “Failed password for user xxx” 大量出现:大概率暴力破解,检查 faillog -u xxx 和 IP 来源(配合 lastb

建立轻量日志习惯,防患于未然

分析是救火,习惯才是防火墙

  • 所有自研脚本或服务,输出日志务必带时间戳:echo “$(date ‘+%F %T’) INFO: started backup” >> /var/log/myscript.log
  • 关键操作留痕:sudo 命令默认已记入 auth.log,但建议开启 sudoers 中 logfile /var/log/sudo.log 并设权限 0600
  • 定期抽检日志健康度:find /var/log -name “*.log” -mtime +7 -size +100M 找异常增长文件
  • 简单集中:单机环境用 rsyslog 转发到远程日志服务器,比本地 grep 更易回溯跨服务事件

基本上就这些。日志本身不会说谎,只是需要你问对问题、选对工具、看懂上下文。