9

我让 logstash 监视主机上的目录。每次它看到与我在 logstash 配置中指定的路径匹配的日志时,它就会开始将数据导入我的 elasticsearch 集群。logstash 是否有办法在使用完日志后删除它?

我想编写脚本来删除logstash已经完成的日志,但是我应该如何知道他完成了哪些日志?

也许你们以前做过这个或者知道如何实现这个?

4

2 回答 2

10

Logstash 当前无法删除文件。文件输入插件的重点是持续监控文件,但无法知道文件何时完成,即何时不再发生写入。

如果您知道文件何时“完成”,您可以调用 Logstash 并通过stdin input plugin提供文件。Logstash 将在收到文件结尾时终止,然后您的脚本可以删除该文件。

您还可以读取 sincedb 文件并将 Logstash 的当前文件偏移量与相应文件的大小进行比较。有关 sincedb 文件格式的详细信息,请参阅从 Logstash 文件输入了解sincedb 文件。

或者您可以确保您有足够的磁盘空间并使用定期日志轮换来删除基于年龄的文件。磁盘空间可能比您的时间便宜。

于 2015-06-11T05:49:52.573 回答
2

新版本的 logstash (V4.1.3) 现在可以做到这一点。可以在属性“file_completed_action”中的 file_input_plugin 中指定该操作。根据他们的文档 ,当处于读取模式时,文件完成后应该执行什么操作。如果指定了删除,则文件将被删除。

于 2018-10-12T18:55:28.277 回答