😎

【AWS】EC2へのAutoRecovery設定&確認をコマンドにて実施してみる

5 min read

はじめに

EC2へのAutoRecovery設定&確認をコマンドにて実施する方法をアウトプットします。

AutoRecoveryとは?

  • AWSのシステム側に起因する問題で、AmazonEC2インスタンスが起動できなくなった場合に、自動復旧する機能
  • CloudWatchにて設定を実施

AutoRecovery設定コマンド

今回は、AWS CloudShellを使用します。

設定内容

  • メトリクス
項目 内容
名前空間 AWS/EC2
メトリクス名 StatusCheckFailed_System
InstanceId i-0358a0da999468094
インスタンス名 Test01
統計 最小
期間 1分

  • 条件
項目 内容
しきい値の種類 静的
アラーム条件 より大きい
しきい値 0

  • アクション指定

■通知

項目 内容
アラーム状態トリガー アラーム状態
SNS トピックの選択 既存の SNS トピックを選択
通知の送信先 AutoRecovery_SNS

※作成済みのSNSトピックを使用します。

■EC2アクション

項目 内容
アラーム状態トリガー アラーム状態
アクション このインスタンスを復旧

  • アラーム名
項目 内容
アラーム名 AutoRecover_Test
アラームの説明 なし

コマンド

コマンド
aws cloudwatch put-metric-alarm --alarm-name "AutoRecover_Test" --namespace AWS/EC2 \
--metric-name StatusCheckFailed_System --dimensions "Name=InstanceId,Value=i-0358a0da999468094" --period 60 \
--statistic Minimum --threshold 0 --comparison-operator GreaterThanThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:ap-northeast-1:555246305565:AutoRecovery_SNS arn:aws:automate:ap-northeast-1:ec2:recover 
  • オプション説明
項目 説明 設定
--alarm-name アラーム名 AutoRecover_Test
--namespace 名前空間 AWS/EC2
--metric-name メトリクス名 StatusCheckFailed_System
--dimensions インスタンスIDの指定 "Name=InstanceId,Value=i-0358a0da999468094"
--period メトリクスの感覚(秒単位) 60
--statistic 統計 Minimum
--threshold 閾値 0
--comparison-operator アラーム条件 GreaterThanThreshold
--evaluation-periods 閾値を超えた回数 1
--alarm-actions アクション設定
※今回は、通知先とEC2アクションを設定
arn:aws:sns:ap-northeast-1:555246305565:AutoRecovery_SNS
arn:aws:automate:ap-northeast-1:ec2:recover

AutoRecovery確認コマンド

コマンド
aws cloudwatch describe-alarms --alarm-names AutoRecover_Test

※「AutoRecover_Test」はアラーム名になります。

実行例
[cloudshell-user@ip-10-0-30-96 ~]$ aws cloudwatch describe-alarms --alarm-names AutoRecover_Test
{
    "MetricAlarms": [
        {
            "AlarmName": "AutoRecover_Test",
            "AlarmArn": "arn:aws:cloudwatch:ap-northeast-1:555246305565:alarm:AutoRecover_Test",
            "AlarmConfigurationUpdatedTimestamp": "2021-07-19T11:40:37.784000+00:00",
            "ActionsEnabled": true,
            "OKActions": [],
            "AlarmActions": [
                "arn:aws:automate:ap-northeast-1:ec2:recover",
                "arn:aws:sns:ap-northeast-1:555246305565:AutoRecovery_SNS"
            ],
            "InsufficientDataActions": [],
            "StateValue": "OK",
            "StateReason": "Threshold Crossed: 1 datapoint [0.0 (19/07/21 11:40:00)] was not greater than the threshold (0.0).",
            "StateReasonData": "{\"version\":\"1.0\",\"queryDate\":\"2021-07-19T11:41:37.215+0000\",\"startDate\":\"2021-07-19T11:40:00.000+0000\",\"statistic\":\"Minimum\",\"period\":60,\"recentDatapoints\":[0.0],\"threshold\":0.0,\"evaluatedDatapoints\":[{\"timestamp\":\"2021-07-19T11:40:00.000+0000\",\"sampleCount\":1.0,\"value\":0.0}]}",
            "StateUpdatedTimestamp": "2021-07-19T11:41:37.216000+00:00",
            "MetricName": "StatusCheckFailed_System",
            "Namespace": "AWS/EC2",
            "Statistic": "Minimum",
            "Dimensions": [
                {
                    "Name": "InstanceId",
                    "Value": "i-0358a0da999468094"
                }
            ],
            "Period": 60,
            "EvaluationPeriods": 1,
            "Threshold": 0.0,
            "ComparisonOperator": "GreaterThanThreshold"
        }
    ],
    "CompositeAlarms": []
}
[cloudshell-user@ip-10-0-30-96 ~]$ 

参考記事

Amazon EC2インスタンスの自動復旧とは。 AWSのAuto Recoveryについて
put-metric-alarm
AWS CLIでCloudwatchのアラートを設定してみた
インスタンスの利用可能な CloudWatch メトリクスのリスト表示