我刚刚开始使用grok进行logstash,我正在尝试使用grok过滤器解析我的日志文件。 我的日志就像下面的
<000> 03-30-2017 13:26:13 [00089] TIMER XXX.TimerLog:entType [organization],queueType [output],memRecno = 446323718,audRecno = 2595542711,已用时间= 998ms
我想只捕获初始日期/时间戳,entType [organization]
和elapsed time = 998ms
。
然而,看起来我必须匹配行中每个单词和数字的模式。有没有办法可以跳过它?我试图到处寻找,却找不到任何东西。请帮助。
答案 0 :(得分:2)
正如 Charles Duffy 建议的那样,您可以简单地绕过您不需要的数据。
您可以使用.*
来执行此操作。
以下将产生您想要的输出,
%{DATE_US:dateTime}.*entType\s*\[%{WORD:org}\].*elapsed time\s*=\s*%{BASE10NUM}
<强>解释强>
\s*
匹配空格字符。\[
绕过[
字符。%{WORD:org}
定义字边界并将其放在新字段org
<强>输出强>
{
"dateTime": [
[
"03-30-2017"
]
],
"MONTHNUM": [
[
"03"
]
],
"MONTHDAY": [
[
"30"
]
],
"YEAR": [
[
"2017"
]
],
"org": [
[
"organization"
]
],
"BASE10NUM": [
[
"998"
]
]
}