mysql日志的Logstash Grok模式
这是我正在分析的示例日志模式。我正在使用grok,但它和我预期的不完全一样mysql日志的Logstash Grok模式,logstash,logstash-grok,Logstash,Logstash Grok,这是我正在分析的示例日志模式。我正在使用grok,但它和我预期的不完全一样 180528 8:46:26 2 Query SELECT 1 要解析此日志,我的grok模式是 %{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message} 此in-grok调试器的输出为 > { "date": [ > [ > "180528" > ] ], "time": [ >
180528 8:46:26 2 Query SELECT 1
要解析此日志,我的grok模式是
%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}
此in-grok调试器的输出为
> { "date": [
> [
> "180528"
> ] ], "time": [
> [
> "8:46:2"
> ] ], "pid": [
> [
> "6"
> ] ], "message": [
> [
> " 2 Query\tSELECT 1"
> ] ] }
如果您在输出中观察,pid将从时间中提取,而实际pid为2将合并到消息中。不确定这里出了什么问题。为什么你不能用
时间
模式来匹配你的时间呢?将其与等于\S+
的NOTSPACE
匹配,并与任何非空白字符(等于[^\r\n\t\f\v]
)匹配是没有意义的
您可以对时间值使用TIME
模式,对pid
使用INT
模式,如下所示:
%{NUMBER:date}\s%{TIME:time}\s%{INT:pid}\s%{GREEDYDATA:message}
这会给你
{
"date": [
[
"180528"
]
],
"BASE10NUM": [
[
"180528"
]
],
"time": [
[
"8:46:26"
]
],
"HOUR": [
[
"8"
]
],
"MINUTE": [
[
"46"
]
],
"SECOND": [
[
"26"
]
],
"pid": [
[
"2"
]
],
"message": [
[
"Query SELECT 1"
]
]
}
成功了。非常感谢。我以前也用过时间,但错过了/s。