Filebeat和Logstash有时会读取旧文件

时间:2019-03-06 15:27:47

标签: linux logging logstash filebeat inode

我有一个文件夹,其中包含2016年至今的日志文件,并使用“ ignore_older:48h”设置filebeat。所有文件轮换使用,因此“ log”始终是新文件,“ log.1”是下一个,等等。 日志位于安装在logstash主机上的linux NFS分区上。

我希望filebeat仅获取最近24小时内已更改的日志文件,而忽略较旧的日志文件。

发生上述情况的原因是,它有时会以不特定的顺序获取较旧的文件。

我在2018年的一个较旧文件上运行了“ stat”命令,并且看到以下内容:

Access: 2019-03-02 03:15:32.254460960 +0000
Modify: 2018-09-06 13:12:00.331460890 +0000
Change: 2019-02-28 03:34:33.946462475 +0000

我运行filebeat版本6.4.2

此数据会混淆Logstash吗?当检查文件是否已更改时,它实际上是在查看什么。我该如何阻止它获取较旧的文件。

更新:

我的文件拍配置如下:

- type: log
  enabled: true
  paths:
    - /path/to/my/log/file/log*
  fields:
    logname: "log.name"
  include_lines: ["SOME_TEXT"]
  ignore_older: 48h

日志为CSV格式。

在另一台主机上,我也这样做,但是直接使用logstash,输入配置如下:

input {
  file {
    path => "/path/to/my/log/file/log*"
    mode => "tail"
    start_position => "beginning"
    close_older => "24h"
    ignore_older => "2w"
  }
}

我在这里有同样的问题。

1 个答案:

答案 0 :(得分:1)

您可以尝试做两件事,一是在登录后删除*

    - /path/to/my/log/file/log

由于filebeat甚至会读取旋转的日志文件,直到达到一定期限为止。

或者对于logstash,path参数是一个数组,如果知道文件旋转的频率,则创建一个要读取的文件列表:

    path => [ "path/to/my/log/file.log", "/path/to/my/log/file1.log", "path/to/my/log/file2.log"]