Filebeat和Logstash有时会读取旧文件

问题描述 投票:1回答:1

我有一个文件夹,其中包含2016年至今的日志文件,并且设置文件标题为“ignore_older:48h”。所有文件都被轮换,以便“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"
  }
}

我在这里有同样的问题。

linux logging logstash filebeat inode
1个回答
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"]
© www.soinside.com 2019 - 2024. All rights reserved.