Grok 解析方括号内的数据
Grok parse data inside square brackets
用 grok 解析这种日志的最佳方法是什么?
2019-03-15 14:42:38,910 INFO [SID:6cd1c3cc-7fb0-4a06-8d4d-e125382568ca] [CID:60c24e3e-c8f9-43e4-bedf-59e861bfabf9] [http-bio-8080-exec-3] [TariffRuleServiceImpl.java:569] no approach by ShouldAddApproachToFixedPrice checkbox : false
我想得到这样的结果:
{
"date": [
"19-03-15"
],
"time": [
"14:42:38,910"
],
"level": [
"INFO"
],
"SID": [
"6cd1c3cc-7fb0-4a06-8d4d-e125382568ca"
],
"CID": [
"60c24e3e-c8f9-43e4-bedf-59e861bfabf9"
],
"thread": [
"http-bio-8080-exec-3"
],
"class": [
"TariffRuleServiceImpl.java:569"
],
"message": [
"no approach by ShouldAddApproachToFixedPrice checkbox : false"
]
}
但我被困在这里:%{DATE:date} %{TIME:time} %{WORD:level} ...?
如何获取内部数据[...]
?非常感谢
Grok 模式的主要思想应该是用反斜杠跳过方括号,例如 \[
。跳过它们后,您可以使用常规模式来匹配您的元素。像这样的东西会如你所愿:
%{DATE:date} %{TIME:time} %{WORD:level} \[SID:%{DATA:SID}\] \[CID:%{DATA:CID}\] \[%{DATA:thread}] \[%{DATA:class}] %{GREEDYDATA:message}
此外,请注意 level
和 [SID
之间有两个空格,这可能会导致您的模式不匹配,具体取决于您的构造。
用 grok 解析这种日志的最佳方法是什么?
2019-03-15 14:42:38,910 INFO [SID:6cd1c3cc-7fb0-4a06-8d4d-e125382568ca] [CID:60c24e3e-c8f9-43e4-bedf-59e861bfabf9] [http-bio-8080-exec-3] [TariffRuleServiceImpl.java:569] no approach by ShouldAddApproachToFixedPrice checkbox : false
我想得到这样的结果:
{
"date": [
"19-03-15"
],
"time": [
"14:42:38,910"
],
"level": [
"INFO"
],
"SID": [
"6cd1c3cc-7fb0-4a06-8d4d-e125382568ca"
],
"CID": [
"60c24e3e-c8f9-43e4-bedf-59e861bfabf9"
],
"thread": [
"http-bio-8080-exec-3"
],
"class": [
"TariffRuleServiceImpl.java:569"
],
"message": [
"no approach by ShouldAddApproachToFixedPrice checkbox : false"
]
}
但我被困在这里:%{DATE:date} %{TIME:time} %{WORD:level} ...?
如何获取内部数据[...]
?非常感谢
Grok 模式的主要思想应该是用反斜杠跳过方括号,例如 \[
。跳过它们后,您可以使用常规模式来匹配您的元素。像这样的东西会如你所愿:
%{DATE:date} %{TIME:time} %{WORD:level} \[SID:%{DATA:SID}\] \[CID:%{DATA:CID}\] \[%{DATA:thread}] \[%{DATA:class}] %{GREEDYDATA:message}
此外,请注意 level
和 [SID
之间有两个空格,这可能会导致您的模式不匹配,具体取决于您的构造。