一、描述
我们修改了
logstash
或filebeat
的日志读取规则时,需要删除
之前存入到es
的数据,但是我们发现,删除了之后,之前写入的数据不能够重新写进去。
- 原因:
logstash
或filebeat
中有文件监听日志读取的位置,意思就是之前读取了的,不会重复读取,我们只需要删除掉记录日志读取位置的文件即可。
删除 Es
二、处理
1、说明
- 记录日志文件读取位置的文件内容:
日志文件的位置
,读取到了日志的某行某列
2、单独使用 logstash
input
(输入)日志文件到logstash
中,filter
过滤数据,然后写入output
(输出)到Es
- 找到
/logstash-6.4.3/data/plugins/inputs/file/
下,.since
开头的文件(隐藏文件),删除即可。 - sincedb文件中记录了每个被监听文件的位置等信息,你可以使用
notepad
或者editPlus
查看.since
开头的文件的内容。 - 查看
.since
开头的文件内容,可以检查我们path
配置是否错误(如果没找到,里面是没有内容的)
input {
file {
path => "E:/test/log/*/*.log"
start_position => "beginning"
stat_interval => 3
}
}
3、logstash 与 filebeat 配合使用
input
(输入)日志文件到filebeat
中,output
(输出)到logstash
;logstash
中input
(输入)filebeat
传过来的内容,filter
过滤,然后写入output
(输出)到Es
- 记录读取日志位置的文件:filebeat-7.2.0-windows-x86\data\registry\filebeat下的
data.json
文件,删除该文件。 - 删除后,
filebeat
执行时会生成一个新的文件data.json
,我们可以查看data.json
文件的内容,以此判断文件是否被正常读取(可能由于文件位置写错了、文件通配符(*?)写错了,导致文件读取失败)。
4、注意
由于 logstash
与 filebeat
是个常驻进程,所以我们重新读取日志到Es的顺序是
- 1、关闭
filebeat
,logstash
服务 - 2、删除
es记录
- 3、删除
.since 开头
、data.json
文件