(rsyslog)仅转发特定日志

(rsyslog)仅转发特定日志

我一直在尝试配置 rsyslog 以将 /var/log/syslog 转发到远程服务器。我能够使用以下配置做到这一点。

$InputFileName /var/log/secure $InputFileTag hostname-secure $InputFileStateFile hostname-secure $InputFileSeverity info $InputRunFileMonitor *.* @address:514

这确实会转发 /var/log/secure,但实际上我在远程服务器上得到了两个日志。一个来自 localhost 标记,另一个来自机器的主机名标记,后者使用上面指定的 FileTag。

我需要添加或删除什么才能将此日志文件转发到具有完整 FQDN 和 FileTag 的远程计算机,而无需包含来自本地主机的第二份副本?

答案1

由于您发送了两次,因此它出现了两次。

“*.* @address:514”正在发送一切此 syslog(客户端)接收作为输入,这意味着 syslog 子系统接收的两个正常日志(即从 /dev/log 读取),通过在 syslog 本身写入 /var/log/secure 之后读取它。

您可能想要做的是添加:$InputFileFacility local0(或一些其他本地未使用的 localX 设施),然后更改:

*.* @地址:514

到 local0.* @address:514

这将确保您只转发从 /var/log/secure 读取的 @address 日志行,并带有您想要的附加标签(假设该标签是您真正希望在远程 syslog 服务器上看到的重要内容)

如果额外的标签不重要,您根本不需要 InputFile* 指令,而只需要转发 (*.* @address:514)。如果您想有选择性,请将 *.* 更改为您感兴趣的转发日志。

相关内容