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"
...
展開と更新戦略は何ですか?たぶん、EBは新しいバージョンで新しいインスタンスを作成し、展開が成功すると、以前のバージョンで古いインスタンスを削除します。特定のEB APP>設定>アップデートおよびデプロイメントを入力するときに確認することができるデプロイメントとアップデートの戦略。 – nicq
@nicq私たちはローリング展開を使用しています。私たちが解決した解決策は、現在のフォルダの外にログを置くことでした。なぜなら、すべてが上書きされているからです。私は –