【发布时间】: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