居然是你

logstash 如何读取一个文件为一个event

Logstash | 作者 jiping | 发布于2020年10月23日 | 阅读数:1573

我有这样的一个需求:
一个文件夹下有很多文本文件,想要通过logstash-input-file 来读取文件内容到elasticsearch,要求是一个文件对应一条记录即event
想过通过codec => multiline来解决问题
 
尝试过很多次,现在问题终于基本解决了,在这里分享以下吧
解决方式:
logstash-input-file 这样配置codec=>multiline

codec => multiline {
   pattern => "EOF"
   negate => true
   what => "previous"
   auto_flush_interval => 1
}
关键几点在于:
pattern = >"EOF" 匹配文末的一行
auto_flush_interval=>1 1s后文件再没有数据就直接读取
 
这样配置后就可以解决最核心问题,配置为pattern=>"EOF"后启动logstash服务,需要删除文本文件才能触发读取操作的bug了
现在还有一点不完善的地方:文末数据拿不到
就是如果文本文件内容如下:
name:xiaoping
sex:1
读取后message会变为name:xiaping  丢掉sex:1这一行了,指标解决办法在文末在夹一行空格,分享给大家,看看大家可有什么好点子
已邀请:

shwtz - 学物理想做演员的IT男

赞同来自:

消灭零回复

pineapple

赞同来自:


auto_flush_interval=>1 1s后文件再没有数据就直接读取


这个怎么理解?是指1s后,文件没有数据更新,logstash会重新读取该文件?

要回复问题请先登录注册