QAスタッフ向けのサービスを開発中です。
主な目標は、Web インターフェースのテスターが github ブランチからこの特定のマシンのダンプを選択し、[デプロイ] ボタンをクリックできるようにすることです。その後、テスト用の Rails アプリが Digital Ocean にデプロイされます。
私が現在取り組んでいる機能は、展開ログを収集し、Web インターフェイスを介して表示することです。
DO ドロップレットには、展開中に入力されるさまざまなログ ファイルを含む "logs" フォルダーがあります。
migrations_result_#{machine_id}.log
、bundle_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 はこれを達成できないようです。または、何か不足していますか?何かアドバイスはありますか?
よろしくお願いします。私の英語で申し訳ありませんが、理解していただければ幸いです。