首页 > 解决方案 > 有时logstash重播所有日志

问题描述

要将我的服务日志发送到 kafka,我使用 logstash(6.5.3)。但是服务器重启和logstash启动时有时会将所有过去的日志发送到kafka。我不知道为什么这样做。

(前任)

日志 1 -> 已完成
日志 2 -> 已完成
日志 3 -> 已完成
日志 4
日志 5

服务器重启,有时logstash重启

日志 1 -> 重播
日志 2 -> 重播
日志 3 -> 重播
日志 4 -> 发送
日志 5 -> 发送

但我期望:

日志 4 -> 发送
日志 5 -> 发送

这是我的logstash conf:

input {
   file {
       type => "log"
       path => [...]
       sincedb_write_interval => 1
       start_position => "beginning"
   }
   .
   .
}

标签: logstash

解决方案


试试下面的配置

input {
  file {
    path => "*.log"
    type => "log"
    start_position => "beginning"
    ignore_older => 0
    sincedb_path => "/usr/share/log/sincedb/log.sincedb"
    sincedb_write_interval => 1
  }
}

其中 sincedb_path需要是logstash 对注册表具有写权限的文件。它将最后读取的详细信息写入此文件

sincedb_write_interval定义logstash 应该多久写入一次 sincedb 注册表。较大的值会使您面临 logstash 崩溃的风险。

参考:Logstash 文件输入:sincedb_path

https://discuss.elastic.co/t/how-does-sincedb-work-for-a-logstash-reading-multiple-files-from-a-single-directory/99456/4


推荐阅读