我是日志轮换的新手,并且有一个系统日志服务器,已设置为接收超过 514 个的防火墙日志。现在,防火墙正在生成大量数据,约 600-800GB/天,服务器容量为 1TB。我试图在 24 小时后使用 logrotation 删除日志。
所有日志都进入 /var/log/syslog
我正在使用 rsyslog 并尝试使轮换工作在我的中/etc/logrotate.d/rsyslog
我有以下几行
{
rotate 1
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 1
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
在我的/etc/logrotate.conf
配置中,如图所示
# see "man logrotate" for details
# rotate log files weekly
daily
# use the adm group by default, since this is the owning group
# of /var/log/syslog.
su root adm
# keep 4 weeks worth of backlogs
rotate 1
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
#dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be also be configured here.
现在大约 30-36 小时后,服务器上只剩下 100GB 空间,并且日志尚未删除。
我到底做错了什么?
答案1
您提供的配置完整吗?没有任何配置条目适用,/var/log/syslog
并且第一个块/etc/logrotate.d/rsyslog
是无用的。
您有一个每周轮换一次许多文件的配置/var/log
和一个每天轮换一次的配置块,但没有任何用途。
您可能想/var/log/syslog
在/etc/logrotate.d/rsyslog
.
您应该能够用来logrotate --debug --verbose /etc/logrotate.conf
测试您的配置。
使用您的 logrotate 配置(将其/var/log/syslog
添加到第一个块后)。它应该每天将现有日志文件复制/旋转一次到syslog.1
.压缩选项在这里毫无用处。因为delaycompress
第一次旋转是不压缩的,从无rotate 1
到syslog.2
压缩以后就会出现。
您更可能想要的是rotate 0
(compress
可以删除选项)。从手册页:
旋转计数
日志文件在被删除或邮寄到邮件指令中指定的地址之前会轮换 count 次。如果 count 为 0,则旧版本将被删除而不是轮换。