如何编辑使用 Rsyslog 发送的消息?

如何编辑使用 Rsyslog 发送的消息?

我有一个发送消息的 rsyslog 服务器。

我想知道我是否可以编辑我转发的任何数据?

也就是说,我发送的其中一个日志包含以下信息:

<13>Nov 29 08:00:00 localhost CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

我有兴趣更改主机名,例如从 localhost 更改为 HOST01

<13>Nov 29 08:00:00 HOST01 CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

我无法控制日志的接收位置,只能控制传送。

答案1

您可以使用物业更换者处理该属性,假设这是找到msg字符串的位置。localhost

在你的rsyslog.conf或类似的行中定义一个模板叫做newmsg

$template newmsg,"%timestamp% %programname% %msg:R,ERE,1:(.*) localhost --end% HOST01 %msg:R,ERE,1: localhost (.*)--end%\n"

为了使其更具可读性,这里将其分成几行,但您必须使用上面的版本:

$template newmsg,
 "%timestamp% %programname% 
  %msg:R,ERE,1:(.*) localhost --end%
  HOST01 
  %msg:R,ERE,1: localhost (.*)--end%
 \n"

这包含 2 个替换器的用途,如下所示:%msg:R,ERE,1: ...(...)... --end%其中%msg%是用作正则表达式的输入的属性R,扩展正则表达式ERE,仅保留捕获组 1,后跟具有捕获组的正则表达式模式(),替换器以 结尾--end

由于此模板始终将单词添加HOST01到消息中,因此您仅应在消息实际包含时使用它localhost,因此请编辑记录消息的操作以对此进行测试,例如:

:msg, contains, " localhost "      -/var/log/test.log; newmsg

注意最后的模板的使用:; newmsg


您也可以在发送到远程时使用模板,例如:

action(type="omfwd" 
 Target="server.example.net"
 Port="10514"
 Protocol="tcp"
 Template="newmsg"
)

相关内容