logstash 中的日志轮换

Log rotation in logstash

我正在使用文件作为 logstash 中日志的输入。我的日志文件每天轮换,所以我想问一下我们如何配置 logstash 的文件插件,以便它可以处理每天轮换的文件。除此之外,文件节拍也可以进行日志轮换。

我正在尝试部分回答您的问题。

首先 - 日志轮换。

来自文档:

Note that the rotated filename will be treated as a new file so if start_position is set to beginning the rotated file will be reprocessed.

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html

这意味着,如果您在文件轮换中有重命名,您的文件可能会加倍(我相信除非路径不包括重命名的文件)。

如果你的路径不包括重命名的文件,那么应该没问题。

我以不同的方式解决了这个问题(相应地在 java 和 python 中)。

我禁用文件重命名,而是使用日期前缀命名日志文件。所以对我来说,在我的 java 应用程序中,文件名是:

my-server-log-%h-%d.log

因为我在分布式环境中工作,所以我将主机名合并到我的日志文件名中。

%h = 主机名 %d = 日期

这最终在我的文件中被命名为:

my-server-log-pandaadb-2016-06-20.log

此文件从未重命名。我修改了我的旋转算法以简单地不重命名而是在午夜创建一个新文件并保持以前的文件不变。 这会导致 logstash(正确地)知道它已经读取了前一个文件中的所有行。因为我在输入中使用了通配符,所以它会选择新文件。没有重复的日志。

顺便说一句,这与 rsync 结合使用效果也很好。

希望对您有所帮助,

阿图尔

编辑:到目前为止我还没有使用过 filebeat,所以我无法对此部分发表评论。