我有一个文件夹,其中包含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"
}
}
我在这里有同样的问题。
答案 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"]