0

RailsアプリケーションでElastic Beanstalk(Ruby 2.3(Puma)を実行する64ビットAmazon Linux 2016.09 v2.3.1)を実行しています。Elastic Beanstalkがアプリケーションログを削除する理由

アプリケーションログは、標準と同様に/var/apps/current/log/production.rbに書き込みます。 EBで標準設定すると、そのファイルは/var/apps/containerfiles/logs/にシンボリックリンクされ、S3へのローテーションとアップロードに使用されます。

何らかの理由でproduction.logは、意図しないと思われる度にeb deployとなるたびに上書きまたは切り捨てられているようです。

私たちは何かを誤って設定しましたが、どのようにデバッグすることをお勧めしますか?

+0

展開と更新戦略は何ですか?たぶん、EBは新しいバージョンで新しいインスタンスを作成し、展開が成功すると、以前のバージョンで古いインスタンスを削除します。特定のEB APP>設定>アップデートおよびデプロイメントを入力するときに確認することができるデプロイメントとアップデートの戦略。 – nicq

+0

@nicq私たちはローリング展開を使用しています。私たちが解決した解決策は、現在のフォルダの外にログを置くことでした。なぜなら、すべてが上書きされているからです。私は –

答えて

2

EB導入のログマジックがないという(おそらく明らかな)結論に達しました。 /var/apps/current/logを含む/var/apps/current/ディレクトリを置き換えるだけです。これにより、既存のすべてのログが削除されます。

したがって、私たちのソリューションはログを別のフォルダに配置し、EBをパッチしてログがどこに置かれているかを知ることでした。 app_log_dir/var/app/containerfiles/logs/)のproduction.logシンボリックリンクを上書きすることで、私たちは依然としてEBへのローテーションとS3への公開のための通常の手順に依存しています。

.ebextensions /ログインrotation.config

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_override_log_symlinks.sh": 
    mode: "000777" 
    content: | 
     #!/bin/bash 
     EB_APP_LOG_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_log_dir) 
     CUSTOM_APPLOG_DIR=/var/log/applog 
     mkdir -p $CUSTOM_APPLOG_DIR 
     chown webapp $CUSTOM_APPLOG_DIR 
     chmod 777 $CUSTOM_APPLOG_DIR 

     cd $EB_APP_LOG_DIR 
     ln -sf $CUSTOM_APPLOG_DIR/production.log production.log 
     ln -sf $CUSTOM_APPLOG_DIR/development.log development.log 

/config/environments/production.rb

... 
# Specific for Rails 5! 
config.paths['log'] = "/var/log/applog/#{Rails.env}.log" 
... 
+0

以下の回答を提出しますが、極端な777の許可ではありませんか?安全ではないでしょうか? – Aqabawe

関連する問題