温馨提示×

怎样排查linux日志故障

小樊
42
2026-09-26 16:16:35
栏目: 智能运维

排查 Linux 日志故障,通常可以按“定位日志 → 分析现象 → 缩小范围 → 验证修复”的思路进行。下面给你一套实用、通用的排查方法。


一、先搞清楚:日志在哪里?

1. 常见日志目录

/var/log/

常见文件:

  • /var/log/messages:系统通用日志(CentOS/RHEL)
  • /var/log/syslog:系统日志(Ubuntu/Debian)
  • /var/log/dmesg:内核启动信息
  • /var/log/auth.log:认证、SSH 登录
  • /var/log/kern.log:内核日志
  • /var/log/cron:定时任务

2. 服务自身日志

  • Nginx:/var/log/nginx/
  • MySQL:/var/log/mysql/ 或 mysqld.log
  • Docker:journalctl -u docker
  • 应用自定义路径(看配置文件)

3. systemd 系统(主流)

journalctl
journalctl -xe
journalctl -u nginx
journalctl --since "2024-01-01 10:00"

二、快速定位“是不是日志本身出问题”

1. 日志不更新?

ls -l /var/log/
  • 文件大小为 0?
  • 时间戳很旧?

可能原因:

  • 服务挂了
  • 日志被 logrotate 截断
  • 磁盘满了
  • 权限错误

2. 磁盘是否满了(非常常见)

df -h

如果 /var 或 / 是 100%:

du -sh /var/log/*

清理大日志文件(不要直接 rm 正在写的日志,用 > 清空)


三、根据故障类型排查

1. 系统启动/内核问题

dmesg | tail -50
journalctl -k

重点关注:

  • Out of memory
  • device not found
  • filesystem error

2. 服务起不来

systemctl status nginx
journalctl -u nginx -xe

常见原因:

  • 配置语法错误
  • 端口被占用
  • 权限不足

3. SSH / 登录异常

tail -f /var/log/auth.log

看是否有:

  • Failed password
  • Permission denied
  • brute force 攻击

4. 应用报错但没日志

  • 检查是否输出到 stdout/stderr
  • Docker 容器:
docker logs 容器名
  • 检查应用配置是否关了日志

四、实用排查命令

实时看日志

tail -f /var/log/syslog

按关键字搜

grep -i error /var/log/syslog
grep -R "timeout" /var/log/

看最近变更

stat /var/log/messages
ls -ltr /var/log/

五、常见“坑”

  1. 日志被 logrotate 改名
    • messages-20240101.gz
  2. 权限问题
    • 服务用户无法写日志
  3. 时间不对
    date
    timedatectl
    
  4. SELinux 拦截
    ausearch -m AVC
    

六、排查思路总结(万能模板)

  1. 服务是否正常?
  2. 日志有没有?
  3. 日志里有没有 error / fail?
  4. 是不是磁盘/权限/配置问题?
  5. 改完重启,看日志是否恢复

如果你愿意,可以告诉我:

  • 用的什么系统(CentOS / Ubuntu / 容器)
  • 什么服务出问题
  • 报错日志内容

我可以直接帮你“对症下药”。

0 踩