ELK filebeat或logstash修改规则之后重写记录到ElasticSearch

一、描述

我们修改了logstashfilebeat的日志读取规则时,需要删除之前存入到es的数据,但是我们发现,删除了之后,之前写入的数据不能够重新写进去。

  • 原因:logstashfilebeat中有文件监听日志读取的位置,意思就是之前读取了的,不会重复读取,我们只需要删除掉记录日志读取位置的文件即可。

删除 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(输出)到logstashlogstashinput(输入)filebeat传过来的内容,filter过滤,然后写入output(输出)到Es

  • 记录读取日志位置的文件:filebeat-7.2.0-windows-x86\data\registry\filebeat下的data.json文件,删除该文件。
  • 删除后,filebeat执行时会生成一个新的文件data.json,我们可以查看data.json文件的内容,以此判断文件是否被正常读取(可能由于文件位置写错了、文件通配符(*?)写错了,导致文件读取失败)。

4、注意

由于 logstashfilebeat是个常驻进程,所以我们重新读取日志到Es的顺序是

  • 1、关闭 filebeatlogstash 服务
  • 2、删除 es记录
  • 3、删除 .since 开头data.json文件

三、相关文章

猜你喜欢

转载自blog.csdn.net/qq_36025814/article/details/108829506