我有这样的一个需求:
一个文件夹下有很多文本文件,想要通过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这一行了,指标解决办法在文末在夹一行空格,分享给大家,看看大家可有什么好点子
一个文件夹下有很多文本文件,想要通过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这一行了,指标解决办法在文末在夹一行空格,分享给大家,看看大家可有什么好点子
2 个回复
shwtz - 学物理想做演员的IT男
赞同来自:
pineapple
赞同来自:
这个怎么理解?是指1s后,文件没有数据更新,logstash会重新读取该文件?