如何使用 Rsyslog 按主机名和时间戳对传入的日志消息进行排序?

如何使用 Rsyslog 按主机名和时间戳对传入的日志消息进行排序?

我很好奇是否有人按日志中的主机名和时间戳对 Rsyslog 捕获的传入日志进行排序。

现在我让 Rsyslog 按主机名对消息进行排序,将它们移动到适当的文件夹,然后将 Logrotate 设置为每日。我担心的是,如果日志在日志轮换之后进入,并且带有前一天的时间戳。由于并非所有服务器时间都同步,我认为如果我需要搜索日志并且文件名不是 100% 正确的日志日期,这可能会造成一些混乱。

有什么帮助吗?

干杯

答案1

确保您使用 ntp 来同步时间。如果没有,请尝试使用消息属性变量这些是从消息或连接信息派生的项目,例如消息内的时间戳、在本地系统上收到消息的时间戳、消息中的主机名、将消息传递到本地框的系统的主机名/IP、PRI 信息等。对于 rsyslog 版本 5 及更早版本,这些是唯一可用的变量。

因此,请尝试使用接收时间变量而不是时间戳,以确保此问题永远不会发生。

> $template TEMPLATE_NAME,"%timegenerated:::date-rfc3339% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"

相关内容