logstash中ignore_older和sincedb_path之间的区别

时间:2016-08-18 07:01:19

标签: elasticsearch logstash

我从csv文件中收集数据。由于数据应该只导入一次,我需要在logstash中为它设置一些配置。 下面两个配置的工作方式相同,只带来新添加的行。它们之间有什么区别吗?

1.
start_position => "beginning"
ignore_older => 0 

2.
sincedb_path => "/dev/null"
start_position => "end"

1 个答案:

答案 0 :(得分:3)

来自文档:

  

忽略旧版

     

当文件输入发现上次修改之前的文件时   以秒为单位指定的时间跨度,将忽略该文件。在它之后   发现,如果修改了被忽略的文件,则不再忽略它   读取任何新数据。默认值为24小时。

  

开始位置

     

选择Logstash最初开始读取文件的位置:开头   或者最后。默认行为处理文件,如实时流和   因此从最后开始。如果您要导入旧数据,请进行设置   从此开始。

     

此选项仅修改文件所在的“第一次联系”情况   以前没见过的新文件,即没有当前位置的文件   记录在Logstash读取的sincedb文件中。如果文件已经存在   以前见过,这个选项没有效果,记录的位置   在sincedb文件中将被使用。

所以在你的情况下编号1:

您将从头开始阅读文件。如果你有旧的日志文件,你应该这样做,否则它们将不会被解析(因为logstash将等待附加到文件)。您还包括所有文件。将ignore_older设置为0将只包含所有内容。如果您想说除了早于X的所有内容,您需要指定此选项(例如,当您要重新分析所有文件时,但不关心超过2周的日志)。

您的用例编号2:

您将从头开始阅读所有文件。由于您将sincedb路径归零,这意味着每次重新启动时都会这样做,因此在logstash关闭时附加的日志将被忽略,因为logstash将不记得它留在文件中的位置。

为什么你会看到相同的结果:

这些选项仅对启动和新文件生效。启动logstash后,它们正在做什么没有区别。如果你从未关闭它(维护或类似),你也不会看到任何差异。

然而,第一个用例是“更好”。它会重新解析所有新文件,因为你指定0,它还会记住它在你关闭你的logstash一段时间后会有用的地方。第二个用例将在重新启动时丢失数据。它还将忽略上次修改时间超过24小时的所有文件。

在此处阅读有关logstash文件输入的更多信息:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html