【问题标题】:Format rsyslog messages - remove IP of logserver格式化 rsyslog 消息 - 删除 logserver 的 IP
【发布时间】:2019-02-18 00:22:40
【问题描述】:

我们的存档服务器正在获取由一些日志服务器发送的日志 - 这些日志服务器在他们转发到存档服务器的每条消息中写入自己的 IP。现在我想使用我的存档服务器的 rsyslog 配置从每个 Logmessage 中“剪切”他们的 IP 地址和“src@”。

例子:

192.168.0.12 是我的日志服务器之一 | Foo 是在其 DNS 名称中翻译的“真实”源 IP

  • 错误 [8 月 23 日 10:00:01 192.168.0.12 src@Foo logdata logdata]

  • 右 [8 月 23 日 10:00:01 Foo logdata logdata]

起初我认为我可以使用“FIELDS”和空格作为分隔符,但当我想删除 src@ 时,我想我也会删除我的真实 Source-IP 的 DNS-Name。如果可能的话,我很想使用 sed,但我不知道如何在我的 rsyslog.conf 中实现它

sed 's/\(192.168.0.12 @src\)//'

应该可以。

_________更新________

有一个看起来很有前途的功能,叫做“替换”,但我似乎根本无法让它工作。

https://www.rsyslog.com/doc/v8-stable/rainerscript/functions.html#replace-str-substr-to-replace-replace-with

if ( $fromhost-ip == '192.168.0.12' ) then {

   replace($msg, "@src", " ")
   -/var/log/foo.log
   stop
}

消息是用 foo.log 编写的 - 但没有任何内容被替换

【问题讨论】:

    标签: regex logging sed rsyslog


    【解决方案1】:

    我得到它与模板一起工作。由于日志服务器正在插入他自己的 IP,我可以“删除” %hostname% 并完成。

    template template_name,"%timegenerated% %progname% %msg%"   
    if fromhost-ip == '192.168.0.12' then {   
       /var/log/foo.log,template_name   
       stop
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多