{CloudWatch}EC2 インスタンスを停止、終了、再起動、または復旧するアラームを作成する

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/UsingAlarmActions.html


-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

-- 2. 確認用EC2インスタンス作成

aws ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' 

 

-- 3. アラーム作成

-- 3.1 停止アクション

aws cloudwatch put-metric-alarm \
--alarm-name alarm11 \
--alarm-description "alarm11" \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 95 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions  Name=InstanceId,Value=i-11111111111111111 \
--evaluation-periods 2 \
--alarm-actions arn:aws:swf:ap-northeast-1:999999999999:action/actions/AWS_EC2.InstanceId.Stop/1.0 \
--unit Percent

 

-- 3.2 再起動アクション

aws cloudwatch put-metric-alarm \
--alarm-name alarm12 \
--alarm-description "alarm12" \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 95 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions  Name=InstanceId,Value=i-11111111111111111 \
--evaluation-periods 2 \
--alarm-actions arn:aws:swf:ap-northeast-1:999999999999:action/actions/AWS_EC2.InstanceId.Reboot/1.0 \
--unit Percent

 

-- 3.3 復旧アクション

aws cloudwatch put-metric-alarm \
--alarm-name alarm13 \
--alarm-description "alarm13" \
--metric-name StatusCheckFailed_System \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 95 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions  Name=InstanceId,Value=i-11111111111111111 \
--evaluation-periods 2 \
--alarm-actions arn:aws:automate:ap-northeast-1:ec2:recover \
--unit Percent

 


-- 3.4 終了アクション

aws cloudwatch put-metric-alarm \
--alarm-name alarm14 \
--alarm-description "alarm14" \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 95 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions  Name=InstanceId,Value=i-11111111111111111 \
--evaluation-periods 2 \
--alarm-actions arn:aws:swf:ap-northeast-1:999999999999:action/actions/AWS_EC2.InstanceId.Terminate/1.0 \
--unit Percent

 

aws cloudwatch describe-alarms


-- 4. アラームテスト
aws cloudwatch set-alarm-state \
--alarm-name alarm11 \
--state-reason "test" \
--state-value ALARM

aws cloudwatch set-alarm-state \
--alarm-name alarm12 \
--state-reason "test" \
--state-value ALARM

aws cloudwatch set-alarm-state \
--alarm-name alarm13 \
--state-reason "test" \
--state-value ALARM

aws cloudwatch set-alarm-state \
--alarm-name alarm14 \
--state-reason "test" \
--state-value ALARM


aws cloudwatch describe-alarm-history --alarm-name "alarm11"
aws cloudwatch describe-alarm-history --alarm-name "alarm12"
aws cloudwatch describe-alarm-history --alarm-name "alarm13"
aws cloudwatch describe-alarm-history --alarm-name "alarm14"


-- 5. クリーンアップ

-- アラームの削除

aws cloudwatch describe-alarms

aws cloudwatch delete-alarms --alarm-names alarm11
aws cloudwatch delete-alarms --alarm-names alarm12
aws cloudwatch delete-alarms --alarm-names alarm13
aws cloudwatch delete-alarms --alarm-names alarm14


-- EC2インスタンスの削除

aws ec2 describe-instances

aws ec2 terminate-instances --instance-ids i-11111111111111111