作为IT工程师,系统日志分析是日常运维和故障排查的重要技能。以下是使用Linux工具进行日志分析的全面方法:
/var/log/messages
- 通用系统消息/var/log/syslog
- 系统日志/var/log/auth.log
- 认证相关日志/var/log/kern.log
- 内核日志/var/log/dmesg
- 启动时的内核消息/var/log/nginx/
- Nginx日志/var/log/mysql/
- MySQL日志# 查看日志文件
cat /var/log/syslog
# 实时查看日志更新
tail -f /var/log/syslog
# 查看特定数量的最新日志
tail -n 100 /var/log/syslog
# 查看特定时间段的日志
sed -n '/2023-10-01 10:00/,/2023-10-01 11:00/p' /var/log/syslog
# 搜索包含"error"的日志
grep -i "error" /var/log/syslog
# 搜索多个关键词
grep -E "error|fail|warning" /var/log/syslog
# 显示匹配行前后内容
grep -A 5 -B 5 "critical" /var/log/syslog
# 统计错误出现次数
awk '/error/ {count++} END {print count}' /var/log/syslog
# 提取特定字段
awk '{print $1, $5}' /var/log/auth.log
# 删除空行
sed '/^$/d' /var/log/syslog
# 替换文本
sed 's/error/ERROR/g' /var/log/syslog
# 查看所有日志
journalctl
# 查看特定服务日志
journalctl -u nginx.service
# 实时查看日志
journalctl -f
# 查看特定时间段的日志
journalctl --since "2023-10-01 00:00:00" --until "2023-10-02 00:00:00"
# 统计不同错误类型出现的频率
grep -i "error" /var/log/syslog | awk '{print $6}' | sort | uniq -c | sort -nr
# 查找最近1小时的高频错误
journalctl --since "1 hour ago" | grep -i "error" | awk '{print $6}' | sort | uniq -c | sort -nr
# 分析特定时间段的错误
sed -n '/Oct 1 10:00/,/Oct 1 11:00/p' /var/log/syslog | grep -i "error"
# 查看logrotate配置
cat /etc/logrotate.conf
ls /etc/logrotate.d/
# 查看配置
cat /etc/rsyslog.conf
# 重启服务
systemctl restart rsyslog
对于大规模日志分析,可以考虑部署ELK Stack进行集中式日志管理。
# 查看启动日志
journalctl -b
# 查看内核启动消息
dmesg | less
# 查看服务状态
systemctl status <service-name>
# 查看服务详细日志
journalctl -u <service-name> -n 100 --no-pager
# 查看网络相关日志
journalctl -u NetworkManager
journalctl -u systemd-networkd
cat /var/log/syslog | grep -i "network"
# 查找大日志文件
find /var/log -type f -size +100M -exec ls -lh {} \;
# 分析磁盘使用情况
du -sh /var/log/*
通过熟练掌握这些工具和技巧,您可以高效地进行Linux系统日志分析和故障排查,快速定位和解决系统问题。