如何将我从其他系统手动复制的静态log4j日志文件推送到我的LogStash ELK服务器?

时间:2016-08-12 04:21:26

标签: elasticsearch logstash kibana filebeat

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

的log4j文件

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

谢谢!

1 个答案:

答案 0 :(得分:0)

你的问题的解决方案有点复杂(ish)。货运代理是理想的,但有时是不可能的。这就是我所做的(完美无缺)。

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

  1. 设置rsync规则,例如使用追加标记每分钟rsync您的日志文件夹。您将不得不测试您的rsync策略,但它不应该太难。
  2. 因此,在您的crontab中,您可以执行以下操作:

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

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

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

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

    3. 以上解决方案是全自动的(因此无需再手动复制任何内容)。我希望有所帮助,

      阿图尔