具有多个匹配项的 Logstash Grok 模式
Logstash Grok pattern with multiple matches
我正在尝试编写一个会产生多个匹配项的 grok 表达式。我正在解析一条重复了 5 次相同模式的行。
我已经能够使用将 return 进行多次匹配的正则表达式创建一个简单的模式,但 Grok 似乎无法那样工作。不是很懂Ruby所以没仔细看代码
示例输入:
222444555
模式:
(?<number>\d{3})*
我希望输出是这样的:
"number" : [
[
"222", "444", "555"
]
]
或类似的东西。这在 Grok 中可能吗?我知道我可以重复这个模式三次,但在某些行中重复的次数未知。
有什么指点吗?
我采取了不同的方法。我使用 grok 来提取行中重复的部分。然后我使用 ruby {}
过滤器使用扫描功能将行分成几部分:
ruby {
code => "event.put('segment', event.get('segments').scan(/.{3}/))
}
效果非常好,因为它在段 属性 中创建了一个数组,然后在该字段上创建了 split {}
,我得到了我想要的多个事件。
我正在尝试编写一个会产生多个匹配项的 grok 表达式。我正在解析一条重复了 5 次相同模式的行。
我已经能够使用将 return 进行多次匹配的正则表达式创建一个简单的模式,但 Grok 似乎无法那样工作。不是很懂Ruby所以没仔细看代码
示例输入:
222444555
模式:
(?<number>\d{3})*
我希望输出是这样的:
"number" : [
[
"222", "444", "555"
]
]
或类似的东西。这在 Grok 中可能吗?我知道我可以重复这个模式三次,但在某些行中重复的次数未知。
有什么指点吗?
我采取了不同的方法。我使用 grok 来提取行中重复的部分。然后我使用 ruby {}
过滤器使用扫描功能将行分成几部分:
ruby {
code => "event.put('segment', event.get('segments').scan(/.{3}/))
}
效果非常好,因为它在段 属性 中创建了一个数组,然后在该字段上创建了 split {}
,我得到了我想要的多个事件。