rsyslog - 配置帮助 - logrotate 和压缩

rsyslog - 配置帮助 - logrotate 和压缩

我是 Linux 和 rsyslog 的新手。我使用日志文件很多年了,但从来没有设置过。目前,我有一些指向我的 Debain Linux 服务器的概念验证设备。我有系统日志消息传入并写入单个文件:/var/log/prd/fwlog 我只关心 3 种设备类型 - 交换机、路由器和防火墙。(所有思科)我的 rsyslog.conf 相当简单,我只修改了基本配置,注释掉了我不喜欢/不需要的东西?

剪掉注释掉的内容。

$ModLoad immark  # provides --MARK-- message capability    

$ModLoad imudp
$UDPServerRun 514

$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

$WorkDirectory /var/spool/rsyslog

$IncludeConfig /etc/rsyslog.d/*.conf

*.*          /var/log/prd/fwlog

最后是我的问题!

  1. 我想将路由器和交换机旋转并分离到带有日期戳“rslog-YYYY-MM-DD”的日志中,并将防火墙旋转并分离到带有日期戳“fwlog-YYYY-MM-DD”的日志中

  2. 我想在 48 小时后压缩(gzip?)日志。

我需要在我的配置中添加什么?

我认为我已经将目录和文件添加到了我的 rsyslog 中的 /etc/logrotate.d/rsyslog

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

/var/log/prd/fwlog*
/var/log/prd/rslog*

{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

提前感谢你的帮助!

答案1

我想将路由器和交换机旋转并分离到带有日期戳“rslog-YYYY-MM-DD”的日志中,并将防火墙旋转并分离到带有日期戳“fwlog-YYYY-MM-DD”的日志中

首先,您需要使用 rsyslog 中的过滤功能将防火墙和交换机分开。具体如何执行此操作取决于您运行的 rsyslog 版本。随着时间的推移,它们的配置语法发生了很大变化。我下面的注释基于 Red Hat 附带的旧版 Rsyslog v3。您需要根据您版本的文档验证这一点。

对于基于属性的过滤器,它看起来像;

:fromhost-ip,isequal,"192.168.1.1"              /var/log/prd/fwlog
&~
:fromhost-ip,isequal,"192.168.1.254"            /var/log/prd/rslog
&~

下一部分是您想要的文件名。为此,您将结合过滤和 rsyslog 的模板来为您的日志生成动态文件名。

$template Firewall,"/var/log/prd/fwlog-%$YEAR%-%$MONTH%-%$DAY%"
$template Switch,"/var/log/prd/rslog-%$YEAR%-%$MONTH%-%$DAY%"

:fromhost-ip,isequal,"192.168.1.1"              -?Firewall
&~
:fromhost-ip,isequal,"192.168.1.254"            -?Switch
&~

我想在 48 小时后压缩(gzip?)日志。

最后一部分,压缩,将依赖于压缩文件的每日 cron 作业。(其中 $date 是 $today - 2。)date 命令已经具有 YYYY-MM-DD 的内置格式,因此我们将使用它。(%F

gzip /var/log/prd/*-$(date --date='2 days ago' +%F)

答案2

首先,您应该对 syslog 功能和严重性有更多了解。它们代表您*.*在配置文件中添加的两个值。

http://wiki.gentoo.org/wiki/Rsyslog#Facility

http://wiki.gentoo.org/wiki/Rsyslog#Severity

如果您可以将发送守护进程设置为对路由器/交换机使用与防火墙不同的设施和/或严重性,那么您应该能够轻松地在中央日志服务器上创建过滤规则,以将日志分离到您指定的不同文件中。例如,将路由器/交换机作为 local1 发送,将防火墙作为 local2 发送。

除了这些设置之外,您还可以通过过滤源 IP 地址来将交换机日志与防火墙日志分开。rsyslog 属性称为来自主机 ip

完成入站 rsyslog 设置后,您需要微调 logrotate 设置。我认为首先两个文件路径应该放在一行上。要压缩两天的日志,需要付出一些额外的努力。请参阅:

https://stackoverflow.com/questions/4495476/logrotate-compression-files-modified-x-number-of-days

您可以使用 logrotate -f /etc/logrotate.conf /etc/logrotate.d/rsyslog 进行测试

更多详细信息请参阅:

http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-debian-part-1

相关内容