一、核心日志文件位置
日志文件 | 记录内容 | 查看命令 |
---|---|---|
/var/log/messages |
通用系统消息(RHEL/CentOS) | cat /var/log/messages |
/var/log/syslog |
通用系统消息(Debian/Ubuntu) | tail -f /var/log/syslog |
/var/log/auth.log |
用户认证日志(SSH/sudo) | grep "Failed" /var/log/auth.log |
/var/log/kern.log |
内核运行日志 | journalctl -k |
/var/log/boot.log |
系统启动日志 | cat /var/log/boot.log |
/var/log/nginx/* |
Nginx访问/错误日志 | tail -f /var/log/nginx/access.log |
二、基础查看方法
-
实时监控日志
tail -f /var/log/syslog # 持续输出新日志
-
按时间筛选
journalctl --since "2024-05-20 09:00:00" --until "2024-05-20 18:00:00"
-
关键词过滤
grep -i "error" /var/log/messages # 筛选错误信息
三、高级分析技巧
-
统计HTTP状态码(Nginx示例)
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
-
检测暴力破解尝试
awk '/Failed password/{print $11}' /var/log/auth.log | sort | uniq -c | sort -n
-
日志时间范围提取
sed -n '/May 20 10:00:00/,/May 20 11:00:00/p' /var/log/syslog
四、日志轮转配置
-
查看当前配置
cat /etc/logrotate.conf ls /etc/logrotate.d/
-
自定义Nginx日志轮转
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate /usr/sbin/nginx -s reload endscript }
五、系统日志服务(journalctl)
-
基本用法
journalctl -xe # 查看详细系统日志 journalctl -u nginx.service # 查看指定服务日志
-
导出日志到文件
journalctl --since "1 hour ago" > recent_logs.txt
六、安全审计日志
-
启用auditd服务
sudo systemctl start auditd sudo auditctl -l # 查看当前规则
-
监控文件修改
sudo auditctl -w /etc/passwd -p wa -k passwd_changes ausearch -k passwd_changes # 查询记录
七、日志分析工具推荐
工具 | 功能 | 安装命令 |
---|---|---|
GoAccess | 实时Web日志分析 | sudo apt install goaccess |
Logwatch | 每日日志摘要报告 | sudo apt install logwatch |
ELK Stack | 企业级日志分析平台 | 需Docker/独立服务器部署 |
八、关键故障排查场景
-
服务器突然重启
grep -i "shutdown" /var/log/messages last reboot # 查看重启历史
-
磁盘空间不足
grep "disk full" /var/log/syslog df -h # 检查磁盘使用
-
服务启动失败
journalctl -u mysql --no-pager -n 50 # 查看MySQL最后50条日志
九、日志归档策略
-
自动清理旧日志
sudo find /var/log -type f -name "*.log" -mtime +30 -delete
-
远程日志备份(rsync示例)
rsync -avz /var/log/ backup-server:/backups/$(hostname)-logs/
十、最佳实践建议
-
统一收集:使用Fluentd/Filebeat集中管理多服务器日志
-
敏感信息过滤:配置日志系统不记录密码等隐私数据
-
监控告警:设置Logcheck检测异常日志模式
通过系统化日志管理,可快速定位80%以上的服务器问题。建议对关键服务(如数据库)建立单独的日志分析流程。