logstash中ignore_older和sincedb_path的区别

oiopk7p5  于 2023-08-01  发布在  Logstash
关注(0)|答案(2)|浏览(185)

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

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

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

字符串

cetgtptt

cetgtptt1#

来自文档:
忽略年长者
当文件输入发现上次修改时间在指定时间间隔(以秒为单位)之前的文件时,将忽略该文件。发现后,如果被忽略的文件被修改,它将不再被忽略,并读取任何新数据。默认值为24小时。
还有
起始位置
选择Logstash开始阅读文件的位置:在开始或结束时。默认行为将文件视为实时流,因此从最后开始。如果要导入旧数据,请将其设置为开始。
此选项仅修改“第一次接触”的情况,其中文件是新的,以前没有看到,即没有记录在由Logstash读取的sincedb文件中的当前位置的文件。如果之前已经看到过一个文件,则此选项无效,并且将使用sincedb文件中记录的位置。
所以在你的案例1中:
您将从头开始阅读文件。如果你有旧的日志文件,你应该这样做,否则它们不会被解析(因为logstash会等待追加到文件中)。您还包括所有文件。将ignore_older设置为0将简单地包括所有内容。如果你想排除所有比X更早的东西,你需要指定这个选项(例如:当您想重新解析所有文件,但您不关心超过2周的日志时)。
您的用例编号2:
您将从头开始阅读所有文件。由于您正在为sincedb路径置空,这意味着您将在每次重新启动时这样做,因此当您的logstash关闭时追加的日志将被忽略,因为logstash不会记住它在文件中的位置。
为什么你会看到相同的结果:
这些选项仅在启动和新建文件时生效。启动logstash后,他们在做什么都没有区别。如果你从来不关闭它(维护或类似),你也不会看到任何区别。
然而,第一个用法是“更好”。它将重新解析所有新文件,因为你指定0,它还记得它剩下的位置,这将是有用的,当你关闭你的logstash一点。第二个usecase将在重新启动的情况下丢失数据。它还将忽略所有自上次修改后超过24小时的文件。
在这里阅读更多关于logstash文件输入的信息:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html

ovfsdjhp

ovfsdjhp2#

注意:Elasticsearch v7及更高版本的默认值为0。(不确定V7之前的版本)

您可以使用时间字符串,如2h(2小时)和5m(5分钟)。默认值为0,这将禁用该设置。注解掉配置与将其设置为0具有相同的效果。
https://www.elastic.co/guide/en/beats/filebeat/7.10/filebeat-input-filestream.html#filebeat-input-filestream-ignore-older

相关问题