在Windows上运行的官方Filebeat docker不允许应用程序旋转日志

时间:2017-06-15 20:43:44

标签: elasticsearch docker filebeat

我正在使用filebeat image - docker.elastic.co/beats/filebeat:5.4.1在Windows上本地设置filebeat容器以从应用程序读取日志并将数据发送到logstash。生成日志的应用程序将在1MB'之后旋转它。大小

  • 我设置了close_inactive = 2M。这样filebeat会在2分钟后释放句柄。
  • 当应用程序停止写入数据并从文件中读取所有数据时,将释放文件句柄。这是预期的。

我担心的是, - 当filebeat容器正在读取文件时,应用程序无法在1MB大小后旋转日志文件。

如果我将filebeat作为服务运行(不在docker中),它按预期工作,即日志在1MB后旋转。

我该如何避免这种情况?

编辑:只是为了获取信息,如果它有帮助,我在linux中看不到这个问题。 Docker filebeat容器允许应用程序旋转文件。

1 个答案:

答案 0 :(得分:0)

基于我与弹性团队成员在https://discuss.elastic.co/t/filebeat-docker-running-on-windows-not-allowing-application-to-rotate-the-log/89616/11

的讨论,我得出了这个答案

这是回应 - " VBoxHeadless.exe用RW-打开日志文件,我说是VirtualBox使用的共享文件系统应该受到责备。它没有使用FILE_SHARE_DELETE打开文件,因此其他应用程序无法删除或重命名文件。"

所以它的VirtualBox是持有文件的文件处理程序,而不是持有句柄的filebeat。

我得到的一个建议是在Windows上创建docker VM时尝试使用Hyper-V驱动程序而不是VirtualBox驱动程序。

正如我在查询中提到的,它不会发生在linux docker上,因为那里没有VM。