在 Debian 系统中,日志分析是排查系统问题、监控服务状态的重要技能。以下是详细的分析方法和常用工具:
Debian 的日志主要位于 /var/log/ 目录下,常见日志包括:
/var/log/syslog(记录系统级事件)/var/log/auth.log(登录、sudo、SSH 等)/var/log/kern.log(内核相关)/var/log/nginx/、/var/log/mysql/ 等(应用程序专用)/var/log/boot.log(启动过程)/var/log/dpkg.log(软件包安装/卸载)tail -f /var/log/syslog # 实时跟踪系统日志
tail -f /var/log/auth.log # 实时查看认证日志
grep "2024-01-01" /var/log/syslog # 按日期过滤
sed -n '/2024-01-01 10:00/,/2024-01-01 12:00/p' /var/log/syslog # 按时间范围
grep -i "error" /var/log/syslog # 忽略大小写搜索错误
grep -C 5 "failed" /var/log/auth.log # 显示匹配行前后5行
wc -l /var/log/syslog # 统计总行数
grep "sshd" /var/log/auth.log | wc -l # 统计SSH相关日志行数
Debian 10+ 默认使用 systemd,可通过 journalctl 查看日志:
journalctl -xe # 查看最近日志并自动分页
journalctl -u nginx.service # 查看指定服务日志
journalctl --since "2024-01-01" --until "2024-01-02" # 按时间范围
journalctl -p err # 只看错误级别日志
journalctl -f # 实时跟踪(类似 tail -f)
# 统计每个IP的SSH登录失败次数
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 提取特定字段(如时间、IP)
grep "GET /" /var/log/nginx/access.log | awk '{print $1, $4, $7}'
sudo apt install lnav
lnav /var/log/syslog
sudo apt install goaccess
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
journalctl -xb # 查看本次启动的日志
dmesg | grep -i "error" # 查看内核启动错误
# Apache/Nginx访问日志分析
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10 # TOP10 IP
grep -i "out of memory" /var/log/syslog
grep -i "disk error" /var/log/kern.log
Debian 使用 logrotate 管理日志大小,配置文件:
/etc/logrotate.conf/etc/logrotate.d/(如 rsyslog、nginx)查看轮转状态:
cat /var/lib/logrotate/status
logwatch 或 swatch 定期发送报告:sudo apt install logwatch
logwatch --detail High --range Today --format html --output mail
sudo)syslog.1.gz),需用 zcat 查看:zcat /var/log/syslog.1.gz | grep "error"
通过以上方法,你可以高效地分析 Debian 系统日志,快速定位问题根源。如果需要针对特定服务(如 Nginx、MySQL)的日志分析,可以进一步说明!