LoginSignup
20
28

More than 5 years have passed since last update.

AWS Auto Scalingのインスタンス縮退時のログの退避手段について

Last updated at Posted at 2017-04-14

問題

AWSのEC2でautoscalingをしているときに、インスタンス縮退時のログの退避ってどうしたらいいんだろう?
簡単な方法は何かないかなーと思って調べました。

Auto Scaling のライフサイクルフック

下記のAWSのAuto Scalingのライフサイクルフックのオンラインマニュアルを読んだのですがよくわかりませんでした。
Auto Scaling ライフサイクルフック

よくわからないというのは、具体的にどういう手順なのかが見えませんでした…

なので、シェルスクリプトをサービスとして登録することで、
インスタンスがterminateさせられるタイミングで処理させます。

サービスのシェルスクリプト

/etc/init.d/instance-lifecycleに下記の内容で保存します。

#!/bin/sh
# chkconfig: 2345 99 1
# description: インスタンス縮退時にトラッキングログ、各種ログを退避する

case "$1" in
  start)
    echo "instance lifecycle process start"
    touch /var/lock/subsys/instance-lifecycle
    ;;
  stop)
    export AWS_CREDENTIAL_FILE=/opt/aws/credential

    # ログをコピー
    scp ~user/project/log/access_log user@server:~user/project/log/`hostname`-access_log-`date "+%Y%m%d%H" -d "1 hours"`

    # ログをS3にコピー
    aws s3 sync ~user/project/log s3://access_log/`hostname`

    echo "instance lifecycle process end"
    rm -f /var/lock/subsys/instance-lifecycle
    ;;
  *) break ;;
esac

/var/lock/subsys/以下にファイルが置かれたサービスがOSの終了時に実行されます。

これを有効化するために以下のコマンドを実行します。

chkconfig --add instance-lifecycle
chkconfig instance-lifecycle on
service instance-lifecycle start

これでAuto Scalingのインスタンス縮退時にログが退避されるようになります。

20
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
28