使用grok进行Logstash过滤以使用[]过滤日志

时间:2014-12-26 10:01:20

标签: filter filtering using logstash grok

我在下面的日志中捕获了弹性搜索,我们通过kibana gui查看。 现在我们需要将日志细分为日期时间戳,日志级别,对象名称,描述等,以便在仪表板中显示它们。

{"message":" Mon Dec 15 2014 05:55:11 [test][crypto][info] mpgw(Test): tid(135196353)[request][10.259.268.129]: certificate validation succeeded for '/C=US/O=Company/OU=Web Servers/CN=abcqa-client.company.com' against 'CompanyCA_ValCred' \r","@version":"1","@timestamp":"2014-12-15T10:55:19.168Z","host":"testserver","path":"/opt/store/device_logging/QA1_filter2.log.20141215055512"}

我在更新logstash conf文件之前使用grok调试器(https://grokdebug.herokuapp.com/)进行测试。我有[],:和()的问题。没有这些,我可以得到如下的输出。

输入: 2014年12月15日星期一05:55:11测试加密信息mpgwTest tid135196353请求10.255.215.129证书验证成功'/C=US/O=Company/OU=Web Servers/CN=abcqa-client.ompany.com' against 'CompanyCA_ValCred'

图案: %{WORD:day} %{MONTH:month} %{MONTHDAY:monthday} %{YEAR:year} %{TIME:time} (?:%{WORD:DOMAIN}) (?:%{WORD:Objecttype}) (?:%{LOGLEVEL:level}) (?:%{WORD:DPObject}) (?:%{WORD:tid}) (?:%{WORD:flowtype}) (?:%{IP:ClientIP}) (?:%{GREEDYDATA:Description})
我正在正确输出。

如何省略[],:,().

1 个答案:

答案 0 :(得分:2)

你可以通过在它们前面放一个反斜杠(' \')来逃避特殊的正则表达式字符。

例如,可以编写模式的第一部分:

%{WORD:day} %{MONTH:month} %{MONTHDAY:monthday} %{YEAR:year} %{TIME:time} \[(?:%{WORD:DOMAIN})\]\[(?:%{WORD:Objecttype})\]\[(?:%{LOGLEVEL:level})\]