【问题标题】:How to monitor specific folder and save content of each log file in that folder to mysql database如何监控特定文件夹并将该文件夹中每个日志文件的内容保存到mysql数据库
【发布时间】:2013-08-14 23:53:07
【问题描述】:

我们正在为我们的 QA 人员开发一项服务。

主要目标是让我们 Web 界面的测试人员能够从 github 分支中选择此特定机器的转储并单击“部署”按钮,然后用于测试的 rails 应用程序将部署到 Digital Ocean。

我现在正在开发的功能是收集部署日志并通过我们的 Web 界面显示它们。

在 DO droplet 上有一个“logs”文件夹,其中包含在部署期间填充的不同日志文件:

migrations_result_#{machine_id}.logbundle_result_#{machine_id}.log

其中#{machine_id}是我们服务上部署机器的id(不是droplet id)。

remote_syslog gem 的帮助下,我们正在监控每个 Droplet 上的“日志”文件夹,并通过 udp 将它们发送到我们的主服务服务器,并在 rsyslog 的帮助下我们将它们存储在一个特定的文件夹中,比如说/var/log/deplogs/

所以在/var/log/deplogs/ 我们有:

migrations_result_1.log、bundle_result_1.log、

migrations_result_2.log、bundle_result_2.log、
...

migrations_result_n.log、bundle_result_n.log

我需要如何监控这个文件夹并将每个日志文件的内容保存到mysql数据库?

我需要实现如下(Ruby 代码):

Machine.find(#{machine_id}).logs.create!(text: "migrations_result_#{machine_id}.log contents")

Rsyslog 似乎无法做到这一点。还是我错过了什么? 有什么建议吗?

先谢谢了,对不起我的英语,我希望你能明白。

【问题讨论】:

    标签: mysql ruby-on-rails ruby linux rsyslog


    【解决方案1】:

    首先,恭喜!你正面临一个美丽的问题。我的建议是使用分而治之。

    以下是我的考虑:

    • 将相关文件夹置于版本控制之下(例如 GIT)
    • 通过 GIT 命令检查每 X 时间更改一次的文件。
    • 还可以获取每个文件的先前版本与新版本之间的差异,以便您可以通过解析新信息来更新数据库。

    以防万一,here 是从 ruby​​ 调用系统命令的方法。

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2023-03-15
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多