Logstash 每小时仅更新一次 S3 访问日志索引

Logstash 每小时仅更新一次 S3 访问日志索引

我使用 Logstash 和 AWS Elasticsearch 服务来索引 S3 访问日志。

日志收集在 S3 存储桶中,使用 Logstash S3 输入过滤器进行处理,处理后重命名,然后归档到另一个存储桶中。我使用这种方法是为了让 Logstash 每次轮换必须处理的访问日志文件数量尽可能少。

但是,日志并非实时处理。当我查看 Kibana 或查询 Elasticseach 时,我看到的最新日志条目将是前一小时的最新日志条目。我从未看到不到 1 小时的日志条目。

我在 s3 输入配置选项中看不到任何可以控制此行为的内容。有一个间隔配置选项,我已将其设置为 120 秒。这应该指示 Logstash 每 2 分钟轮询一次包含日志的 S3 存储桶。

我还使用这个 Logstash 系统来处理来自各种服务器的系统日志输入,它可以近乎实时地处理日志。

这是 Logstash 中 S3 输入过滤器特有的东西吗?

答案1

这个问题似乎源于 S3 生成访问日志的方式,而不是与 Elasticsearch 或 Logstash 相关的任何原因。

根据:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html

服务器访问日志记录将尽最大努力交付。大多数针对正确配置日志记录的存储桶的请求都将导致交付日志记录,并且大多数日志记录将在记录后的几个小时内交付。

据我所见,通过查看目标 S3 存储桶中包含日志的实际文件,您永远不会看到少于 1 小时的日志条目。

您将看到恰好 1 小时前的日志条目,这就解释了您会看到截至该小时标记的条目。

因此,Elasticsearch 和 Logstash 均按设计运行,问题出在 AWS S3 上。

相关内容