CentOS Syslog日志存储容量规划指南
日志轮转是控制syslog存储容量的基础手段,通过logrotate工具实现日志文件的自动切割、压缩和清理。CentOS系统中,syslog的轮转配置主要位于/etc/logrotate.d/rsyslog(或/etc/logrotate.d/syslog),需重点调整以下参数:
daily(每日,推荐)、weekly(每周)或monthly(每月)。高频日志(如/var/log/messages)建议用daily,避免单文件过大。rotate参数指定保留的轮转日志文件数量(如rotate 7表示保留最近7天的日志)。需平衡存储空间与日志可追溯性(例如生产环境建议保留7-30天)。compress(压缩旧日志)和delaycompress(延迟压缩,避免压缩当天日志失败)。压缩率通常可达50%-80%,显著减少存储占用。missingok(日志文件丢失时不报错)、notifempty(日志为空时不轮转),避免不必要的错误提示和资源浪费。create参数设置新日志文件的权限(如create 0640 root adm),确保日志文件的安全性(仅root和adm组可读)。示例配置(/etc/logrotate.d/rsyslog片段):
/var/log/messages {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
过高的日志级别(如debug)会记录大量无关细节,导致日志文件膨胀。需根据实际需求降低日志级别:
/etc/rsyslog.conf或/etc/rsyslog.d/下的配置文件,修改日志过滤规则。例如,将全局日志级别从info(记录常规信息)调整为warning(仅记录警告及以上级别),可减少约50%的日志量:*.warning;mail.none;authpriv.none;cron.none /var/log/messages
cron、authpriv),可单独设置更严格的级别(如*.err仅记录错误日志)。将日志发送到外部日志服务器(如ELK Stack、Graylog或远程syslog服务器),彻底释放本地存储压力。适用于分布式系统或日志量大的场景:
/etc/rsyslog.conf,添加以下内容将日志发送到远程服务器(remote_server_ip替换为实际IP,514为默认端口):*.* @remote_server_ip:514 # UDP传输(轻量,适合实时性要求低的场景)
*.* @@remote_server_ip:514 # TCP传输(可靠,适合生产环境)
当磁盘空间紧急不足时,可通过以下命令快速清理旧日志:
find命令查找并删除/var/log目录下超过7天的.log文件(执行前建议备份重要日志):find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
gzip压缩(节省空间但不删除原文件):find /var/log -type f -name "*.log" -mtime +30 -exec gzip {} \;
cron定时任务(如每天凌晨执行),实现自动化清理:0 0 * * * find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
/etc/rsyslog.conf,将cron、authpriv等服务的日志分别存储:if $programname == 'cron' then /var/log/cron.log
& stop
if $programname == 'authpriv' then /var/log/authpriv.log
& stop
/var分区空间不足,可将日志存储到其他有足够空间的分区(如/data/log)。编辑rsyslog配置文件(如/etc/rsyslog.conf),修改日志路径:*.* /data/log/messages
修改后需重启rsyslog服务使配置生效:systemctl restart rsyslog