mysql 日志的 Logstash Grok 模式
Logstash Grok Pattern for mysql logs
这是我正在解析的示例日志模式。我正在使用 grok,但它并不完全符合我的预期
180528 8:46:26 2 Query SELECT 1
要解析此日志,我的 grok 模式是
%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}
grok 调试器的输出是
> { "date": [
> [
> "180528"
> ] ], "time": [
> [
> "8:46:2"
> ] ], "pid": [
> [
> "6"
> ] ], "message": [
> [
> " 2 Query\tSELECT 1"
> ] ] }
如果您在输出中观察到,pid 正在从时间中提取,而实际 pid 2 正在合并到消息中。不确定这里出了什么问题。
为什么不能将您的时间与 TIME
模式相匹配呢?将它与等于 \S+
的 NOTSPACE
匹配并匹配任何非空白字符(等于 [^\r\n\t\f\v ]
)
是没有意义的
您可以使用 TIME
模式作为时间值,INT
用于 pid
,如下所示,
%{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"
]
]
}
这是我正在解析的示例日志模式。我正在使用 grok,但它并不完全符合我的预期
180528 8:46:26 2 Query SELECT 1
要解析此日志,我的 grok 模式是
%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}
grok 调试器的输出是
> { "date": [
> [
> "180528"
> ] ], "time": [
> [
> "8:46:2"
> ] ], "pid": [
> [
> "6"
> ] ], "message": [
> [
> " 2 Query\tSELECT 1"
> ] ] }
如果您在输出中观察到,pid 正在从时间中提取,而实际 pid 2 正在合并到消息中。不确定这里出了什么问题。
为什么不能将您的时间与 TIME
模式相匹配呢?将它与等于 \S+
的 NOTSPACE
匹配并匹配任何非空白字符(等于 [^\r\n\t\f\v ]
)
您可以使用 TIME
模式作为时间值,INT
用于 pid
,如下所示,
%{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"
]
]
}