日志轮转配置不当
磁盘空间不足
权限问题
服务配置问题
系统崩溃或异常关机
# 检查logrotate配置
sudo cat /etc/logrotate.conf
sudo ls /etc/logrotate.d/
# 示例修复配置(以syslog为例)
sudo nano /etc/logrotate.d/rsyslog
确保配置包含适当的保留策略:
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
# 检查磁盘空间
df -h
# 查找大文件
sudo du -ahx / | sort -rh | head -20
# 清理旧日志(谨慎操作)
sudo find /var/log -type f -name "*.gz" -mtime +30 -delete
# 检查日志文件权限
ls -la /var/log/
# 修复权限(以syslog为例)
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
# 检查rsyslog配置
sudo nano /etc/rsyslog.conf
# 检查journald配置(systemd系统)
sudo nano /etc/systemd/journald.conf
确保配置中包含:
Storage=persistent
Compress=yes
# 安装logwatch进行日志监控
sudo apt-get install logwatch # Debian/Ubuntu
sudo yum install logwatch # CentOS/RHEL
# 配置日志监控脚本示例
sudo nano /usr/local/bin/log_monitor.sh
脚本内容:
#!/bin/bash
LOG_DIR="/var/log"
THRESHOLD=90
DISK_USAGE=$(df -h $LOG_DIR | awk 'NR==2 {print $5}' | cut -d'%' -f1)
if [ $DISK_USAGE -ge $THRESHOLD ]; then
echo "警告: $LOG_DIR 磁盘使用率已达到 ${DISK_USAGE}%" | mail -s "日志磁盘空间警报" admin@example.com
fi
实施集中式日志管理
定期备份重要日志
# 示例备份脚本
sudo tar -czvf /backup/logs_backup_$(date +%Y%m%d).tar.gz /var/log/
设置日志保留策略
监控日志系统健康状态
使用日志守护进程
# 确保rsyslog服务正常运行
sudo systemctl status rsyslog
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
通过以上措施,可以有效解决和预防Linux服务器日志丢失问题,确保系统日志的完整性和可用性。