0

我在弹性 serach 中捕获了以下日志,我们通过 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"}

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

输入:Mon Dec 15 2014 05:55:11 test crypto INFO mpgwTest tid135196353 request 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})
我得到了正确的输出。

我怎么能省略[],:,().

4

1 回答 1

3

您可以通过在它们前面放置反斜杠 ('\') 来转义特殊的正则表达式字符。

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

%{WORD:day} %{MONTH:month} %{MONTHDAY:monthday} %{YEAR:year} %{TIME:time} \[(?:%{WORD:DOMAIN})\]\[(?:%{WORD:Objecttype})\]\[(?:%{LOGLEVEL:level})\]
于 2014-12-27T21:51:37.193 回答