0

我是logstash的新手,我在filebeats的logstash中有以下多行输入:

"message":"[step info]\nstep: 3\ngrammar name: grammar1\nnoInputTimeout: 6000\nstep stream idle time: 14910\nstep stream start time: 2017-12-01 17:06:10.024\nrec start time: 2017-12-01 17:06:09.994\nrec finish time: 2017-12-01 17:06:12.748\nsystem prompt duration: 570\nuser barged in: true\nuser noInput time: 0\nuser speech duration: 1190\nspeech start trigger: 8265\nspeech start on rec: 7945\nspeech end trigger: 8415\nspeech end on rec: 9135\nrec completion cause: 000 success\nrec completion type: SR\nrec result: onetwothreefour\nrec inputMode: speech\nRTF: 0.47\nrec process time: 557\nrec latency: 61\nrec post delay: 62"

我正在尝试用 grok 找到一种模式,但没有任何效果。我也尝试过拆分和变异,但无法使其工作。

4

1 回答 1

0

这只是供您尝试的指针,但KV 过滤器(键值过滤器)可能会有所帮助。

看看你的例子,你可以做这样的事情。

kv {
  source => "message"
  field_split => "\n"
  value_split => ":"
}

这将采取你的例子

"message":"[step info]\nstep: 3\ngrammar name: grammar1\nnoInputTimeout: 6000\nstep stream idle time: 14910\nstep stream start time: 2017-12-01 17:06:10.024\nrec start time: 2017-12-01 17:06:09.994\nrec finish time: 2017-12-01 17:06:12.748\nsystem prompt duration: 570\nuser barged in: true\nuser noInput time: 0\nuser speech duration: 1190\nspeech start trigger: 8265\nspeech start on rec: 7945\nspeech end trigger: 8415\nspeech end on rec: 9135\nrec completion cause: 000 success\nrec completion type: SR\nrec result: onetwothreefour\nrec inputMode: speech\nRTF: 0.47\nrec process time: 557\nrec latency: 61\nrec post delay: 62"

并在 \n 字符上拆分,然后从您拥有的示例中创建键值对,左侧是字段名称,右侧是值。

step: 3
grammar name: grammar1
noInputTimeout: 6000
step stream idle time: 14910
step stream start time: 2017-12-01 17:06:10.024
rec start time: 2017-12-01 17:06:09.994
rec finish time: 2017-12-01 17:06:12.748

如果您需要拆分 [步骤信息],那么您需要提供更多示例,但我将使用 greedydata 基本上将您的内容拆分为 2 个字段,1 个用于 [步骤信息],1 个用于 [步骤行]并通过分割线作为上面 KV 过滤器的源字段。

希望这能为您指明正确的方向。

E.

于 2017-12-23T16:30:01.387 回答