我是logstash的新手,我在logbeash的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找到一个模式,但没有任何工作。 我也尝试过split和mutate,但是无法让它发挥作用。
答案 0 :(得分:0)
这只是您尝试的指针,但KV filter,(键值过滤器)可能有所帮助。
看看你的例子,你可以做这样的事情。
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 char,然后从你拥有的示例中创建键值对,左侧是字段名称,右侧是值。
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过滤器的源字段传递。
希望这能指出你正确的方向。
电子。