share facebook facebook twitter menu hatena pocket slack

2012.11.21 WED

Auto ScalingでのEC2の増減をSNSで通知

鈴木 宏康

WRITTEN BY 鈴木 宏康

以前、コマンドラインツール使ってVPCでAuto ScalingAuto 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に統合できればと考えています。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。