我一直在尝试配置 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)。如果您想有选择性,请将 *.* 更改为您感兴趣的转发日志。