logstash 中multiline合并数据为一条

在用logstash处理csv文件时,文件中有一行数据中有一个单元格内的数据是换行的,这样Logstash读取的时候会变成两行,也就是把原来完整的一行因为有值是换行的,所以就拆分成两条了,这种情况下我们需要将两条合并为一条。

我所处理的文件中正常是每一行都是以数字id作为开头的,另外第一行数据是以逗号开头的,所以目前的处理方法是认为数字和逗号开头的换行是正常换行,其他的换行属于需要合并的。这时就需要用到Logstash提供的 Multiline插件:

input {
    file {
       path => ......
       start_position => ......
       sincedb_path => ....
       //合并插件用法
       codec => multiline {
         pattern => "^[0-9,]"   //正则匹配,我这里匹配的是以0-9数字开头和逗号开头,  ^表示以。。。开头
         negate => true    //negate:否定,否认,使无效,这里设置为true,就说明是对上面匹配没有成功
         what => "previous"    //表示当上述正则没有匹配成功时将当前数据与上一条数据进行合并,这个值可以是previous和next,根据需要自己设置
         auto_flush_interval => 1        //如果是静态文件,他会一直监听着什么时候是最后一行所以永远无法合并最后一条,加上这个属性之后就可以读取到文件的最后一条数据了
       }
    }

}

===============================
如果是pattern想要匹配多个指定的字符串,只需要用|将每个字符串隔开:
codec => multiline {
         pattern => "hangzhou|shanghai"     //这样就可以匹配到hangzhou或者shanghai
         negate => true    
         what => "previous"    
         auto_flush_interval => 1       
       }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值