日志是Linux系统故障排查的重要工具,系统和服务会记录各种运行信息到日志文件中。以下是使用日志进行Linux故障排查的全面指南。
系统日志:
/var/log/messages
- 通用系统活动日志(传统RHEL/CentOS)/var/log/syslog
- 通用系统日志(Debian/Ubuntu)/var/log/auth.log
- 认证和安全相关日志/var/log/boot.log
- 系统启动日志服务特定日志:
/var/log/nginx/
- Nginx日志/var/log/apache2/
- Apache日志/var/log/mysql.log
- MySQL日志/var/log/cron
- 计划任务日志内核和硬件日志:
/var/log/kern.log
- 内核日志/var/log/dmesg
- 内核环缓冲区日志journalctl
- systemd日志(现代Linux发行版)基本命令:
# 查看日志文件
less /var/log/syslog
cat /var/log/messages
# 实时查看日志更新
tail -f /var/log/syslog
# 查看特定时间段的日志
sed -n '/2023-10-01 10:00/,/2023-10-01 11:00/p' /var/log/syslog
# 查找错误信息
grep -i error /var/log/syslog
grep -i fail /var/log/auth.log
journalctl (systemd系统):
# 查看全部日志
journalctl
# 查看特定服务的日志
journalctl -u nginx.service
# 查看从今天开始的日志
journalctl --since today
# 查看错误级别以上的日志
journalctl -p err
# 实时查看日志
journalctl -f
高级工具:
# 使用awk分析
awk '/error/ {print $0}' /var/log/syslog
# 使用logwatch进行日志摘要
logwatch --range today
# 使用swatch监控日志
swatch --config-file=/etc/swatch.conf
系统启动问题:
# 查看启动日志
journalctl -b
dmesg | less
cat /var/log/boot.log
服务崩溃:
# 检查服务状态
systemctl status servicename
# 查看服务特定日志
journalctl -u servicename --no-pager -n 50
性能问题:
# 检查系统资源历史
sar -u -r -n DEV -f /var/log/sa/saXX
# 检查OOM killer活动
grep -i kill /var/log/messages
dmesg | grep -i oom
网络问题:
# 检查网络连接日志
journalctl -u NetworkManager
cat /var/log/syslog | grep dhclient
安全相关问题:
# 检查认证失败
grep "Failed password" /var/log/auth.log
# 检查SSH登录
grep sshd /var/log/auth.log
日志轮转:
/etc/logrotate.conf
和/etc/logrotate.d/
下的文件集中式日志:
日志级别调整:
监控和告警:
通过系统化的日志分析,大多数Linux系统问题都可以被有效诊断和解决。