以前、コマンドラインツール使ってVPCでAuto ScalingとAuto ScalingのScaling Policyを作成しCloudWatchと連携してみるの記事でAuto Scalingの準備ができたので実際に負荷をかけて挙動を確認したいところですが、その前にAuto ScalingのアクションをSNS(メール)で通知できるようにしておきます。
はじめに、SNSのトピック作成です。
Auto Scalingのコマンドで通知先を設定する時にこのトピックを指定することになります。
次に作成したトピックに対して、サブスクリプションを設定します。
サブスクリプションはトピックに投げられたメッセージの通知先(メール)となります。
設定だけでは有効にならないので、下記のメールが届きましたら本文中の確認用のリンクをクリックする必要があります。
You have chosen to subscribe to the topic: arn:aws:sns:ap-northeast-1:811118151095:vpc-as To confirm this subscription, click or visit the link below (If this was in error no action is necessary): Confirm subscription Please do not reply directly to this e-mail. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send email to sns-opt-out
下記のように、トピックにサブスクリプションが設定されていることがわかります。
それでは、Auto Scalingのアクションの通知設定です。
通知できるアクションの種類は下記の通りです。
# as-describe-auto-scaling-notification-types NOTIFICATION-TYPE autoscaling:EC2_INSTANCE_LAUNCH NOTIFICATION-TYPE autoscaling:EC2_INSTANCE_LAUNCH_ERROR NOTIFICATION-TYPE autoscaling:EC2_INSTANCE_TERMINATE NOTIFICATION-TYPE autoscaling:EC2_INSTANCE_TERMINATE_ERROR NOTIFICATION-TYPE autoscaling:TEST_NOTIFICATION
すべてのアクションに対して通知するようにしました。
# as-put-notification-configuration vpc-ag > --notification-types autoscaling:EC2_INSTANCE_LAUNCH,autoscaling:EC2_INSTANCE_LAUNCH_ERROR,autoscaling:EC2_INSTANCE_TERMINATE,autoscaling:EC2_INSTANCE_TERMINATE_ERROR,autoscaling:TEST_NOTIFICATION > --topic-arn arn:aws:sns:ap-northeast-1:811118151095:vpc-as OK-Put Notification Configuration
通知の設定をすると、まずはTEST_NOTIFICATIONが下記のように通知(メール)されます。
(–notification-typesにTEST_NOTIFICATIONを設定して無ければ通知されません)
Auto Scaling: test notification for group "vpc-ag" -------- Service: AWS Auto Scaling Time: 2012-09-20T15:52:49.977Z RequestId: 3ad41f27-033b-11e2-bfe2-dfc775ae5221 Event: autoscaling:TEST_NOTIFICATION AccountId: 811118151095 AutoScalingGroupName: vpc-ag AutoScalingGroupARN: arn:aws:autoscaling:ap-northeast-1:811118151095:autoScalingGroup:d6b54038-f82a-4890-b2bd-f4f4cefc3c73:autoScalingGroupName/vpc-ag
それでは、スケールアウトしてみます。
# as-execute-policy vpc-sp-out > --auto-scaling-group vpc-ag OK-Executed Policy
下記のようにインスタンスの起動に対して通知(メール)されます。
Auto Scaling: launch for group "vpc-ag" -------- Service: AWS Auto Scaling Time: 2012-09-20T15:55:25.028Z RequestId: 419a3f3f-37b9-43cf-9d40-d9a091381064 Event: autoscaling:EC2_INSTANCE_LAUNCH AccountId: 811118151095 AutoScalingGroupName: vpc-ag AutoScalingGroupARN: arn:aws:autoscaling:ap-northeast-1:811118151095:autoScalingGroup:d6b54038-f82a-4890-b2bd-f4f4cefc3c73:autoScalingGroupName/vpc-ag ActivityId: 419a3f3f-37b9-43cf-9d40-d9a091381064 Description: Launching a new EC2 instance: i-74748877 Cause: At 2012-09-20T15:54:34Z a user request executed policy vpc-sp-out changing the desired capacity from 0 to 1. At 2012-09-20T15:54:48Z an instance was started in response to a difference between desired and actual capacity, increasing thapacity from 0 to 1. StartTime: 2012-09-20T15:54:48.665Z EndTime: 2012-09-20T15:55:25.028Z StatusCode: InProgress StatusMessage: Progress: 50 EC2InstanceId: i-74748877 Details: {}
そして、スケールインです。
# as-execute-policy vpc-sp-in > --auto-scaling-group vpc-ag OK-Executed Policy
今度はインスタンスの終了に対して次のように通知(メール)されます。
Auto Scaling: termination for group "vpc-ag" -------- Service: AWS Auto Scaling Time: 2012-09-20T15:57:26.607Z RequestId: 37a4d76b-1e9a-4b5b-8108-0a806397aab1 Event: autoscaling:EC2_INSTANCE_TERMINATE AccountId: 811118151095 AutoScalingGroupName: vpc-ag AutoScalingGroupARN: arn:aws:autoscaling:ap-northeast-1:811118151095:autoScalingGroup:d6b54038-f82a-4890-b2bd-f4f4cefc3c73:autoScalingGroupName/vpc-ag ActivityId: 37a4d76b-1e9a-4b5b-8108-0a806397aab1 Description: Terminating EC2 instance: i-74748877 Cause: At 2012-09-20T15:56:15Z a user request executed policy vpc-sp-in changing the desired capacity from 1 to 0. At 2012-09-20T15:56:20Z an instance was taken out of service in response to a difference between desired and actual capacity, snking the capacity from 1 to 0. At 2012-09-20T15:56:20Z instance i-74748877 was selected for termination. StartTime: 2012-09-20T15:56:21.013Z EndTime: 2012-09-20T15:57:26.607Z StatusCode: InProgress StatusMessage: Progress: 0 EC2InstanceId: i-74748877 Details: {}
今回の内容をNagiosに統合できればと考えています。