如何将 %fromhost-ip% 变量附加到远程主机日志的 rsyslog 中的每个日志行?

dim*_*ike 3 linux remote logging syslog

我使用 rsyslog 变量来组成日志文件名。变量 %HOSTNAME% 和 %fromhost-ip%。一切正常,但问题是:如何将这些变量附加/前置到来自远程主机的日志的每个日志行?

dim*_*ike 5

解决方案是使用自定义 rsyslog 模板。首先,您创建日志消息模板。以下模板类似于默认的系统日志格式,但添加了%fromhost-ip%您可以以相同方式添加其他变量的内容

$template tplremote,"%timegenerated% %HOSTNAME% %fromhost-ip% %syslogtag%%msg:::drop-last-lf%\n"
Run Code Online (Sandbox Code Playgroud)

然后我们创建文件名模板:

$template RemoteHost,"/var/log/remote/%HOSTNAME%.log"
Run Code Online (Sandbox Code Playgroud)

最后,我们告诉 rsyslog 使用创建的模板:

if ($hostname != 'localhost') then ?RemoteHost;tplremote  
& ~
Run Code Online (Sandbox Code Playgroud)

请注意,最后一行必须添加到包含的行之前。

*.info;mail.none;authpriv.none;cron.none
Run Code Online (Sandbox Code Playgroud)

另请注意,这已在 redhat 上的 epel repo 的新 rsyslog 中进行了测试和工作(rsyslog-7.6.7-1.el6.x86_64)。其他发行版中的行为可能有所不同。