我对ELK和grok相对较新。我正在尝试解析可能包含一个或多个相同值重复的日志文件。例如,日志文件可以包含:
值1;值2;值3;
值1;
值1;值2;值3; VALUE4; ........ value900;
对于此示例,我使用以下grok模式:
(([A-Z0-9] *)?[;])+
这似乎可以正常工作,并解析每个值。问题是“tag”字段只包含最后一个值(即value900)。所有以前的值似乎都被覆盖了。
有没有办法收集所有值并将它们存储到数组中而不是仅获取最后一个值?
答案 0 :(得分:1)
只需使用mutate:
mutate {
split => ["tag",";"]
}
这会将标记字段中的值拆分为数组。所以只需匹配你的grok中的整个字符串((?<tag>[a-z0-9;]+)
,然后从那里拆分。