Linux系统日志主要存储在以下几个位置:
- /var/log/messages
- 常规系统消息
- /var/log/auth.log
- 认证和安全相关日志
- /var/log/kern.log
- 内核日志
- /var/log/syslog
- 系统日志
- /var/log/secure
- 安全相关日志(Red Hat系)
- /var/log/boot.log
- 系统启动日志
cat
/less
/more
- 查看日志内容grep
- 过滤特定内容tail
/head
- 查看日志首尾awk
/sed
- 文本处理journalctl
- systemd日志查看工具logwatch
- 日志摘要工具syslog-ng
/rsyslog
- 日志管理系统ELK Stack
(Elasticsearch, Logstash, Kibana) - 专业日志分析平台# 查看最近1小时的日志
grep "$(date -d '1 hour ago' '+%b %_d %H')" /var/log/syslog
# 使用journalctl按时间筛选
journalctl --since "1 hour ago"
# 查找错误级别日志
grep -i "error\|fail\|warning\|critical" /var/log/syslog
# 查找特定服务错误
journalctl -u nginx --since today | grep -i error
# 检查失败的登录尝试
grep "Failed password" /var/log/auth.log
# 检查SSH暴力破解
grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 检查OOM(内存不足)事件
dmesg | grep -i "out of memory"
# 检查磁盘错误
dmesg | grep -i "error\|fail\|io\|disk"
# 安装logwatch
sudo apt install logwatch # Debian/Ubuntu
sudo yum install logwatch # RHEL/CentOS
# 配置每日报告
sudo nano /etc/logwatch/conf/logwatch.conf
# 安装fail2ban
sudo apt install fail2ban
# 配置SSH防护
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 分析Apache日志中的404错误
awk '($9 == 404) {print $7}' /var/log/apache2/access.log | sort | uniq -c | sort -nr
# 匹配IP地址和异常时间
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}.*(error|fail)" /var/log/syslog
#!/bin/bash
# 分析系统日志中的异常
LOG_FILE="/var/log/syslog"
ERROR_PATTERNS=("error" "fail" "warning" "critical" "exception")
for pattern in "${ERROR_PATTERNS[@]}"; do
echo "===== $pattern occurrences ====="
grep -i "$pattern" "$LOG_FILE" | tail -n 5
echo
done
通过以上方法,您可以系统性地分析Linux系统日志中的异常情况,及时发现并解决潜在问题。