1

QAスタッフ向けのサービスを開発中です。

主な目標は、Web インターフェースのテスターが github ブランチからこの特定のマシンのダンプを選択し、[デプロイ] ボタンをクリックできるようにすることです。その後、テスト用の Rails アプリが Digital Ocean にデプロイされます。

私が現在取り組んでいる機能は、展開ログを収集し、Web インターフェイスを介して表示することです。

DO ドロップレットには、展開中に入力されるさまざまなログ ファイルを含む "logs" フォルダーがあります。

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

#{machine_id}サービスにデプロイされたマシンの ID はどこにありますか (ドロップレット ID ではありません)。

remote_syslog gemの助けを借りて、各ドロップレットの「ログ」フォルダーを監視し、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 はこれを達成できないようです。または、何か不足していますか?何かアドバイスはありますか?

よろしくお願いします。私の英語で申し訳ありませんが、理解していただければ幸いです。

4

1 に答える 1

0

まずはおめでとうございます!あなたは美しい問題に直面しています。私の提案は、分割統治法を使用することです。

ここに私の考慮事項があります:

  • 関連するフォルダーをバージョン管理下に置きます (GIT など)。
  • X時間ごとに変更されたファイルをGITコマンドで確認します。
  • また、各ファイルの以前のバージョンと新しいバージョンの違いを取得して、新しい情報を解析してデータベースを更新できるようにします。

念のため、Rubyからシステムコマンドを呼び出す方法を紹介します

それが役立つことを願って、

于 2013-08-14T11:09:18.740 に答える