日志分析是系统管理、故障排查和安全监控的重要技能。以下是在Linux环境下进行高效日志分析的全面指南。
/var/log/messages
- 通用系统活动日志(RHEL/CentOS)/var/log/syslog
- 通用系统日志(Debian/Ubuntu)/var/log/auth.log
- 认证相关日志/var/log/secure
- 安全相关日志(RHEL/CentOS)/var/log/kern.log
- 内核日志/var/log/boot.log
- 系统启动日志/var/log/nginx/
- Nginx日志/var/log/apache2/
- Apache日志/var/log/mysql.log
- MySQL日志/var/log/postgresql/
- PostgreSQL日志/var/log/cron
- 定时任务日志/var/log/maillog
- 邮件服务日志/var/log/httpd/
- Web服务器日志cat
- 查看完整文件内容tail
- 查看文件尾部
bash
tail -n 100 /var/log/syslog # 查看最后100行
tail -f /var/log/syslog # 实时跟踪日志更新
head
- 查看文件头部less
/more
- 分页查看日志grep
- 文本搜索
bash
grep "error" /var/log/syslog
grep -i "warning" /var/log/syslog # 忽略大小写
grep -A 5 -B 5 "error" /var/log/syslog # 显示匹配前后5行
awk
- 强大的文本处理
bash
awk '/error/ {print $1, $2, $5}' /var/log/syslog
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr # 统计IP访问次数
sed
- 流编辑器
bash
sed -n '/2023-10-01/,/2023-10-02/p' /var/log/syslog # 提取特定日期范围的日志
logrotate
- 自动轮转、压缩和删除日志/etc/logrotate.conf
和 /etc/logrotate.d/
journalctl
- systemd日志查看器
bash
journalctl -u nginx.service # 查看nginx服务日志
journalctl --since "2023-10-01" --until "2023-10-02"
journalctl -f # 实时跟踪
Logwatch - 每日日志摘要
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # RHEL/CentOS
GoAccess - Web日志分析器
goaccess /var/log/nginx/access.log -a
ELK Stack (Elasticsearch, Logstash, Kibana) - 企业级日志分析平台
Graylog - 开源日志管理平台
Splunk - 商业日志分析工具(有免费版)
grep -i "error" /var/log/syslog | awk '{print $6}' | sort | uniq -c | sort -nr
sed -n '/Oct 10 10:00/,/Oct 10 11:00/p' /var/log/syslog
grep -r "connection refused" /var/log/
date -d "@$(awk '{print $1}' /path/to/logfile)" +"%Y-%m-%d %H:%M:%S"
watch -n 60 'tail -n 20 /var/log/syslog | grep -i error'
检查异常登录尝试:
grep "Failed password" /var/log/auth.log
检查sudo使用:
grep "sudo:" /var/log/auth.log
检查SSH登录:
grep "sshd" /var/log/auth.log | grep "Accepted"
检查root用户活动:
grep "root" /var/log/secure
通过掌握这些工具和技巧,您可以高效地分析Linux系统日志,快速定位问题并提高系统安全性。