日志分析是系统管理、故障排查和安全监控的重要技能。以下是在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系统日志,快速定位问题并提高系统安全性。