输入文件start_position =>删除.sincedb文件后,“开始”不起作用

时间:2017-02-18 15:28:19

标签: logstash elastic-stack

版本:ElasticSearch-5.2.1 / Logstash-5.2.1 / Kibana-5.2.1 操作系统:Windows 2008

我刚刚开始研究ELK Stack&我正面临加载数据的一些问题 我有以下.json代码

input { 
   file {  
      path => "D:\server.log" 
      start_position => beginning 
    } 
} 
filter { 
   grok { 
     match => ["message","\[%{TIMESTAMP_ISO8601:timestamp}\] %{GREEDYDATA:log_message}"] 
   } 
} 
output { 
   elasticsearch { 
     hosts => "localhost:9200" 
    } 
 }

我删除了 .sincedb 文件

然而,当我在Kibana中提取日志信息时,我可以看到数据仅在我第一次解析后开始。我的日志文件中有2到3个月的数据。

2 个答案:

答案 0 :(得分:1)

就我而言,即使输入systemctl restart logstash,即使您删除了sincedb文件,在进程关闭之前,logstash也会保存新的sincedb文件,然后关闭。

如果您想从头开始真正读取文件,则应该:

  1. 停止logstash服务:sudo systemctl stop logstash
  2. /var/lib/logstash/plugins/inputs/file/usr/share/logstash/data/plugins/input/file目录中删除sincedb文件
  3. 启动logstash服务:sudo systemctl start logstash

答案 1 :(得分:0)

如果您有文件输入,如果您错过了ignore older,这实际上会阻止您重新阅读旧文件以及您错过了我认为的since db path财产。您可以通过@Steve Shipway查看此答案,以便更好地解释在文件输入中包含这两个属性。

所以你的input看起来像这样:

input { 
   file {  
      path => "D:\server.log" 
      start_position => "beginning" <-- you've missed out the quotes here
      ignore_older => 0 
      sincedb_path => "/dev/null" 
    } 
}

注意sincedb_path设置为 / dev / null 会使文件从头开始读取,每次都不是很好的解决方案所有。但是,我认为删除 .sincedb 文件应该可行。如果你真的想从你离开的地方拿起行,你真的需要 .sincedb 文件保留到最后更新的最后一个位置。您可以查看this以获取详细说明。

希望这有帮助!