版本: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个月的数据。
答案 0 :(得分:1)
就我而言,即使输入systemctl restart logstash
,即使您删除了sincedb文件,在进程关闭之前,logstash也会保存新的sincedb文件,然后关闭。
如果您想从头开始真正读取文件,则应该:
sudo systemctl stop logstash
/var/lib/logstash/plugins/inputs/file
或/usr/share/logstash/data/plugins/input/file
目录中删除sincedb文件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以获取详细说明。
希望这有帮助!