我是 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
最后是我的问题!
我想将路由器和交换机旋转并分离到带有日期戳“rslog-YYYY-MM-DD”的日志中,并将防火墙旋转并分离到带有日期戳“fwlog-YYYY-MM-DD”的日志中
我想在 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