我从csv文件中收集数据。由于数据应该只导入一次,我需要在logstash中为它设置一些配置。 下面两个配置的工作方式相同,只带来新添加的行。它们之间有什么区别吗?
1.
start_position => "beginning"
ignore_older => 0
2.
sincedb_path => "/dev/null"
start_position => "end"
答案 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