【问题标题】:Rsyslog template capture groupsRsyslog 模板捕获组
【发布时间】:2016-07-18 03:58:03
【问题描述】:

我正在创建一个 Rsyslog 模板来将 apache 日志解析为 JSON,以便发送到弹性搜索。

我目前正在尝试从 access_log 中捕获请求时间,但似乎无法让我的正则表达式正常工作。

模板常量的Rsyslog配置:

constant(value="\",\"request_time\":\"")     property(name="msg" regex.expression="(\\[(.*)\\])" regex.type="ERE" regex.match="2")

即使 regex 似乎在 rsyslog regex 测试页面上工作,我也不断得到“NO MATCH”。如果我将 regex.match 替换为 0,我会得到完整的时间戳,但它包括我希望避免的 []。

示例请求:

192.168.33.1 - - [30/Mar/2016:08:45:38 +0000] "GET /TEST HTTP/1.1" 404 281 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"

任何建议将不胜感激。 谢谢!

【问题讨论】:

    标签: elasticsearch rsyslog


    【解决方案1】:

    我设法通过缩小我想要的特定数据而不是“那些方括号之间的任何内容”来使其工作:

      constant(value="\",\"request_time\":\"")     property(name="msg" regex.expression="([0-9]*\\/[a-zA-Z]*\\/[0-9]*:[0-9]*:[0-9]*:[0-9]{2})" regex.type="ERE" regex.match="0")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2019-11-02
      • 2014-04-18
      相关资源
      最近更新 更多