1

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

4

1 回答 1

3

我试图部分回答你的问题。

首先 - 日志轮换。

从文档:

请注意,旋转后的文件名将被视为新文件,因此如果 start_position 设置为开始,则旋转后的文件将被重新处理。

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,所以我不能评论那部分。

于 2016-06-29T11:52:43.717 回答