elasticsearch 如何使用grok模式匹配此日志?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch 如何使用grok模式匹配此日志?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch 如何使用grok模式匹配此日志?

elasticsearch 如何使用grok模式匹配此日志?,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,日志内容如下所示: [2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] run entry() 11ms [2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] entry done \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{NUMBER:process_id}\]

日志内容如下所示:

[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] run entry() 11ms
[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] entry done
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{NUMBER:process_id}\] \[%{LOGLEVEL:loglevel}\] \[%{UUID:request_id}\] %{DATA:message}(\s%{NUMBER:use_time}ms)?
第一行记录函数调用信息和执行时间,另一行记录正常日志

现在,我想匹配所有这些,如果行中有exec时间,我想匹配它

我写的格洛克模式如下:

[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] run entry() 11ms
[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] entry done
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{NUMBER:process_id}\] \[%{LOGLEVEL:loglevel}\] \[%{UUID:request_id}\] %{DATA:message}(\s%{NUMBER:use_time}ms)?
它不起作用。比赛结果如下:

{
  "process_id": "13968",
  "loglevel": "INFO",
  "message": "",
  "request_id": "1e74b6b7-fcb2-4dde-a259-7db1de0350ea",
  "timestamp": "2018-07-09 11:30:59"
}

如果将DATA:message更改为greedyddata:message,则无法匹配执行时间。

我通过使用原始regexp替换总消息字段解决了此问题:


\[%{TIMESTAMP\u ISO8601:TIMESTAMP}\]\[%{NUMBER:process\u id}\]\[%{LOGLEVEL:LOGLEVEL}\]\[%{UUID:request\u id}\](?。+(?:(?\d+(?:\.\d+))ms)*/code>

我的模式不能只匹配一个字,其他测试正常