具有联接的相同类型的连续事件的多行组合

时间:2019-03-12 18:41:38

标签: logstash

考虑此日志文件结构:

patA1 .*? patA2 .*? patA3
... (many lines here)
patB1 .*? patB2 .*? patB3
patB1 .*? patB2 .*? patB3

在上面,请考虑patXY是不同的正则表达式模式,即可以通过类似以下方式grok来代替上面的第一行:

grok {
  match => { 
    "message" => "%{patA1:keyA1} (?<afterA1:.*?) %{patA2:keyA2} (?<afterA2:.*?) %{patA3:keyA3}"}
  }
}

我想multiline进行上述操作,然后像这样从多行生成事件:

event1: keyA3, keyB1, keyB3
event2: keyA3, keyB2, keyB3

也就是说,从A行中选择一些部分,并将其添加到B行的每一行中,最后会产生与Bs一样多的事件。

换句话说,我想像处理日志行那样对上述内容进行处理,例如:

patA1 .*? patA2 .*? patA3 .*? patB1 .*? patB2 .*? patB3
patA1 .*? patA2 .*? patA3 .*? patB1 .*? patB2 .*? patB3

我可以单独从中拿取物品。

请注意,这些行具有相同的结构,因此在使用multiline时,上述消息看起来像:

"message" => "patA1 .*? patA2 .*? patA3\npatB1 .*? patB2 .*? patB3\npatB1 .*? patB2 .*? patB3"

即它具有A和所有B都在同一“块”中,因为B是连续的并且都具有相同的形状。

在logstash中执行此操作的最佳方法是什么?

0 个答案:

没有答案