首页 > 解决方案 > 及时将多个日志从filebeat发送到logstash

问题描述

我有一台服务器,所有日志都存在于一个目录中。

现在这些文件按日期分隔。如何设置 filebeat 以便将这些日志文件中的所有日志文件发送到其他服务器上的 kibana(以及如何配置它),以便在单个文件中以相同的及时方式接收日志。

例如:在服务器 A 中:我有 40 个最近 40 天的日志文件

我希望及时将这 40 条日志从最旧到最新放在其他服务器的单个文件中。

并且带有今天日期的文件也将使用新日志进行更新。

我已经配置了 filebeat 和 logstash 以便保持同步,但是日志没有及时处理,因此我在通过某些逻辑处理它时遇到了问题。

球状图案

/directory to logs/*.log

标签: elasticsearchlogstashfilebeat

解决方案


如果您询问如何使用 filebeat 和 logstash 将一组日志文件按时间排序顺序远程同步到单个文件,那么...

如果你将harvester_limit设置为1,这样一次只处理一个文件,那么我认为你可以使用scan.order和scan.sort来获取filebeat以正确的顺序发送数据。logstash 是一个更大的问题。在当前版本中,您可以禁用 java 执行引擎(logstash.yml 中的“pipeline.java_execution: false”)并设置“--pipeline.workers 1”,在这种情况下,logstash 将保留顺序。

在未来的版本中,我不希望弹性维护两个执行引擎,因此一旦 ruby​​ 执行引擎退役,就无法阻止事件在管道中重新排序(java 引擎通常会以可重现的方式重新排序管道中的事件但不可预测的方式)。


推荐阅读