【问题标题】:Rsyslog Regex and DynaFile templateRsyslog Regex 和 DynaFile 模板
【发布时间】:2020-06-08 01:57:41
【问题描述】:

我正在使用以下模板从防火墙日志中仅提取必填字段,以节省 Splunk 中的带宽和许可成本。当我将它保存到静态文件时它正在工作,但我需要将文件名保存在时间戳中,以便我将轮换旧日志。我正在尝试使用 DynaFile,但我不知道如何将两个模板用于单个日志?

带有静态文件的工作模板:

template(name="clean" type="string"
         string="%TIMESTAMP% %HOSTNAME%  %msg:R,ERE,0,DFLT:type=\"([^\"]*)\"--end% %msg:R,ERE,0,DFLT:subtype=\"([^\"]*)\"--end% %msg:R,ERE,0,DFLT:level=\"([^\"]*)\"--end% %msg:R,ERE,0,DFLT:eventtime=[1-9]+--end% %msg:R,ERE,0,DFLT:srcip=(.*) srcport=[0-9]+--end% %msg:R,ERE,0,DFLT:srcintf=\"([^\"]*)\"--end%\n"
        )

if $hostname == '192.168.0.1' then action(type="omfile" file="/var/log/firewall.log" template="clean")

如何使用 DynaFile 保存此模板的结果?感谢您的宝贵时间。

【问题讨论】:

    标签: rsyslog


    【解决方案1】:

    omfile 模块接受参数"dynaFile=" 而不是"file=" 来指定动态文件名的模板。

    如果您只是在文件名中使用%timestamp%,它可能会为每条消息创建一个新文件,因为时间戳包括小时、分钟和秒。一种可能性是将时间戳转换为称为 rfc3339 的标准格式,然后使用 property replacer 获取该字符串的年-月-日部分。

    template(name="mydynafile" type="string" string="/var/log/my-%timestamp:1:10:date-rfc3339%.log")
    
    if $hostname == '192.168.0.1' then action(type="omfile" dynaFile="mydynafile" template="clean")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-26
      • 2016-07-18
      • 2015-05-12
      • 2019-11-02
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多