系统日志路径
/var/log/messages # 通用系统日志(RHEL)/var/log/syslog # 通用系统日志(Debian)/var/log/auth.log # 认证日志(Debian)/var/log/secure # 认证日志(RHEL)/var/log/kern.log # 内核日志/var/log/dmesg # 启动时硬件日志/var/log/boot.log # 启动日志/var/log/cron # 计划任务日志/var/log/yum.log # yum日志/var/log/dnf.log # dnf日志
实时查看日志
tail -f /var/log/messages # 实时追踪系统日志tail -f /var/log/secure # 实时认证日志dmesg # 内核环形缓冲区dmesg -T # 带可读时间戳dmesg | grep -i error # 过滤错误信息dmesg -w # 实时内核日志
journalctl 详解
journalctl # 所有日志journalctl -f # 实时日志journalctl -n 100 # 最近100行journalctl -p err # 错误级别journalctl -p warning # 警告级别journalctl --since today # 今天日志journalctl --since "2024-01-01 00:00:00" # 指定日期起journalctl --since "1 hour ago" # 最近1小时journalctl -u nginx # 指定服务日志journalctl -b # 本次启动日志journalctl -b -1 # 上次启动日志journalctl -k # 内核日志journalctl --no-pager # 不分页journalctl -o json # JSON格式输出journalctl --disk-usage # 日志占用空间journalctl --vacuum-time=7d # 清理7天前日志journalctl --vacuum-size=1G # 清理到1Gjournalctl --list-boots # 启动历史
日志分析与统计
# 登录失败统计grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn# 统计各状态码awk '{print $9}' access.log | sort | uniq -c | sort -rn# 访问量Top IPawk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20# 找出500错误awk '$9==500' access.log | tail -50# 今日请求数grep "$(date +%d/%b/%Y)" access.log | wc -l
日志轮转 logrotate
cat /etc/logrotate.conf # 全局配置ls /etc/logrotate.d/ # 各服务配置logrotate -f /etc/logrotate.conf # 强制执行logrotate -d /etc/logrotate.conf # 调试模式(不实际执行)
logrotate.conf 示例:
daily # 每天轮转rotate 14 # 保留14份compress # 压缩旧日志delaycompress # 延迟压缩missingok # 丢失不报错notifempty # 空文件不轮转create 0640 root utmp # 新日志权限postrotate systemctl reload nginx > /dev/null 2>&1endscript