0

我每天从 3 台服务器手动复制文件。由于安全原因,我无法设置自动转发器。所以我有 3 个目录 srvapp1 srvapp2 和 dbserver,我手动将文件复制到这些文件夹中。如何将这些文件推送到logstash?是否有用于更新格式为 app.log app.log.1 的 log4j 文件的工具...

当我完成这项工作并可以证明 ElasticSearch//LogStash/Kibana 的功能和有效性时,我可能能够说服管理层在生产/开发环境中正式使用它。

谢谢!

4

1 回答 1

0

您的问题的解决方案有点复杂(ish)。转发器是理想的,但有时是不可能的。这是我所做的(效果很好)。

您需要安全连接吗?使用 rsync + ssh!

  1. 设置您的 rsync 规则,例如每分钟使用附加标志 rsync 您的日志文件夹。您将不得不测试您的 rsync 策略,但这应该不会太难。

因此,在您的 crontab 中,您可以执行以下操作:

* * * * * rsync -avzi --stats -e 'ssh ...' --append-verify FROM_FOLDER TO_FOLDER

这会将您的日志文件名称从 A 安全地附加到 B。因此您的复制开销也很小。

  1. 使用 rsync 命令的目标文件夹中的文件输入配置 logstash。Logstash 将自动从那里获取所有文件并记录所有更改。一切正常。

  2. 标准化您的日志名称。如果您的应用程序重命名它,Logstash 将重新解析您的日志文件。我解决这个问题的方法是将我的日志附加器配置为简单地使用唯一名称。我没有使用 my-log-file.log 并在午夜将其重命名为 my-log-file.log.XXXX.XX.XX,而是从一开始就在每个文件中使用日期模式。这样,Logstash 就不会对重新解析感到困惑。

上述解决方案是全自动的(因此不再需要手动复制任何内容)。我希望这会有所帮助,

阿图尔

于 2016-08-12T10:07:01.470 回答