【发布时间】:2019-02-05 16:32:59
【问题描述】:
日志内容如下:
[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
第一行记录函数调用信息和执行时间,其他行是正常日志。
现在,我想匹配所有这些,如果行中有 exec 时间,我想匹配它。
我这样写 grok 模式:
\[%{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 更改为 GREEDYDATA:message,则无法匹配执行时间。
【问题讨论】:
标签: elasticsearch logstash logstash-grok