Syslog 输出文件在 Syslog 服务器上每小时拆分

Syslog 输出文件在 Syslog 服务器上每小时拆分

我已经在 CentOS 上实现了 syslog 服务器,并使用下面的模板每天生成输出文件 -

$template TmplNationalIP_PL, "/var/log/NIPFW/MX480/CGNAT_PL_%$year%.%$month%.%$day%"
if ($msg contains 'OR_NAT' and $msg contains '55.91.165.') then ?TmplNationalIP_PL
& ~

与上面(每天)类似,我希望每小时(而不是每天)分割系统日志文件。

由于找不到任何可供使用的 HOURLY 变量,如何按小时拆分系统日志消息文件?

另外,我正在使用 logrotate + cron 作业,但没有选项可以在 logrotate 中每小时轮换(最小值是每天)。

下面是摘自猫 /etc/logrotate.d/syslog

/var/log/NIPFW/MX480
{
        rotate 50
        daily
        copytruncate
        missingok
        notifempty
        compress
        delaycompress
        dateext
        maxage 30
        sharedscripts
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}

答案1

cron 和 logrotate

该脚本/etc/cron.daily/logrotate位于 daily 文件夹中。

您必须将其移动到配置文件中/etc/cron.hourly并更改daily为。hourly

答案2

基于小时的系统属性rsyslog适当地称为“$hour”。这记录在rsyslog 属性页

因此,您可以如下所示修改模板以生成每小时日志文件:

$template TmplNationalIP_PL,"/var/log/NIPFW/MX480/CGNAT_PL_%$year%.%$month%.%$day%.%$hour%"

相关内容