rsyslog - 配置帮助 - logrotate 和压缩

Sec*_*ete 6 cisco rsyslog debian-wheezy

我是 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
Run Code Online (Sandbox Code Playgroud)

最后我的问题!

  1. 我想将日志中的路由器和交换机旋转和分离,日志中的日期标记为“rslog-YYYY-MM-DD”,防火墙也转换为日志中的日期标记为“fwlog-YYYY-MM-DD”

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

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

我想我将目录和文件添加到 /etc/logrotate.d/rsyslog 中的 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
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Aar*_*ley 5

我想将日志中的路由器和交换机旋转和分离,日志中的日期标记为“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
&~
Run Code Online (Sandbox Code Playgroud)

下一部分是您想要的文件名。为此,您将过滤与 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
&~
Run Code Online (Sandbox Code Playgroud)

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

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

gzip /var/log/prd/*-$(date --date='2 days ago' +%F)
Run Code Online (Sandbox Code Playgroud)