如何防止旧日志从文件拍追加到Logstash?

时间:2019-01-09 12:25:25

标签: elasticsearch logstash elastic-stack filebeat

我正在使用filebeat从远程服务器获取日志,并将其发送到logstash,因此它工作正常。 但是,当新日志添加到源日志文件中时,filebeat会从头开始读取这些日志并将其发送到logstash,然后logstash将所有日志和旧日志附加到elasticsearch中,即使我们已经在elasticsearch中包含了这些旧日志,因此这里也会发生重复日志。

所以我的问题是如何仅将新添加的日志传送到logstash中。一旦在日志文件中添加了新的日志行,那么这些新文件应以logstash的形式发送到elasticsearch。

这是我的filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /home/user/Documents/ELK/locals/*.log

logstash输入为logstash-input.conf

input {
  beats {
    port => 5044
  }
}

2 个答案:

答案 0 :(得分:0)

在某处似乎有问题。通常,Filebeat具有足够的智能来保存偏移量,这意味着它仅传送自上次爬网以来添加的日志行。

有些设置可能会干扰这一设置,请仔细阅读它们: -ignore_older -close_inactive(https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html#filebeat-input-log-close-inactive) -close_timeout(https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html#filebeat-input-log-close-timeout

请发布完整的filebeat.yml文件,以及要尝试收集的系统和日志类型。

答案 1 :(得分:0)

我认为您犯的错误与几个月前测试文件拍的错误相同(使用 vi编辑器手动更新日志/文本文件)。当您使用vi编辑器手动编辑文件时,它将在磁盘上使用新的元数据创建一个新文件。 Filebeat使用元数据而不是文本来标识文件的状态。因此,请重新加载完整的日志文件。

在这种情况下,请尝试将其附加到文件中。 回声“东西” >> /path/to/file.txt

更多信息:Read this