【问题标题】:logstash not reading the current file after log rotation happens发生日志轮换后,logstash 未读取当前文件
【发布时间】:2020-10-22 22:14:42
【问题描述】:

我从日志文件中读取输入并写入 kafka。即使在日志轮换之后,inode 也不会改变。日志轮换后,仍会读取已轮换的日志文件(xx.log.2020-xx-xx),而不是指向主文件(xx.log)。

以下是我对输入文件的配置文件设置。 我是否需要添加任何其他配置以忽略读取旧文件。

input {
  file {
    path => "C:/Users/xx.log"
  }
}

【问题讨论】:

  • 旋转后是否显示为xx.log
  • @karanshah 它读取旧的日志文件(xx.log.2020-xx-xx),最后几个小时(12 小时)后,它开始读取当前文件(xx.log)。添加sincedb_clean_after,会有帮助吗?
  • 是的,我认为设置 sincedb_clean_afterignore_older 会有所帮助。还将路径过滤器更改为xx.log* 之类的内容,以便logstash 可以跟踪所有新旧文件并确定要读取的文件。查看这个关于 logrotation 和文件节拍的已知问题 (elastic.co/guide/en/beats/filebeat/7.9/file-log-rotation.html)。我认为它们也适用于logstash。

标签: logstash logstash-configuration


【解决方案1】:

这与this one 的问题相同。默认情况下,Logstash 可以很好地处理文件轮换。

您需要做的就是确保使用识别所有日志文件的全局模式(例如...log*),Logstash 将跟踪它们:

input {
  file {
    path => "C:/Users/xx.log*"
  }
}

【讨论】:

  • 我试过给日志*。那没有帮助。它在旋转发生时创建了新的 inode,但仍从旧的旋转文件中读取并将数据发送到 kafka。我通过在调试模式下运行看到并确认了这一点。
  • 使用 logstash 7.9.3,当我输入文件路径为 xx.log* 并且当日志轮换发生时,如 xx.log.1/xx.log.2 等......它可以工作。它正确读取指向 xx.log 的文件。对于日期如 xx.log.2020-MM-DD 等的翻转...输入文件路径为 xx.log* 不起作用。当旋转发生时,它仍然会在 5 分钟内读取旧文件并将其转储,然后指向 xx.log 并读取它。所以仍然会发生重读。
猜你喜欢
  • 2015-01-29
  • 2021-03-26
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多