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

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

Amazon CloudWatch アラームアクションを使用して、EC2 インスタンスを自動的に停止、終了、再起動、または復旧するアラームを作成できます。停止または終了アクションを使用すると、今後インスタンスを実行する必要がなくなったときにコストを節約できます。再起動アクションを使用すると、これらのインスタンスを自動的に再起動でき、復旧アクションを使用すると、システムで障害が発生した場合に新しいハードウェアで復旧できます。

自動的にインスタンスを停止または終了するシナリオはいくつもあります。例えば、バッチ給与計算処理ジョブまたは科学計算タスクを専用に行うインスタンスを使用している場合が挙げられます。これらのインスタンスは一定期間動作して仕事を完了します。このようなインスタンスは、アイドル状態 (課金されている状態) にせずに、停止または終了するとコスト削減につながります。アラームアクションの停止と終了の主な違いとして、停止したインスタンスは、後で再実行が必要な場合に簡単に再起動できます。また、同じインスタンス ID とルートボリュームを保持することもできます。しかし、終了したインスタンスを再起動することはできません。代わりに新しいインスタンスを開始する必要があります。

停止、終了、再起動、アクションは、Amazon CloudWatch によって (AWS/EC2 名前空間で) 提供されている基本および詳細モニターリングメトリクスや、「InstanceId=」ディメンションを含んでいるカスタムメトリクスなど、Amazon EC2 インスタンスごとのメトリクスで設定されている任意のアラームに追加できます。ただし、InstanceId 値が実行中の有効な Amazon EC2 インスタンスを参照している場合に限ります。復旧アクションは、StatusCheckFailed_Instance を除き、Amazon EC2 のインスタンスごとのメトリクスで設定されているアラームに追加することもできます。

インスタンスを再起動、停止、終了可能な CloudWatch アラームアクションをセットアップするには、サービスにリンクされた IAM ロール AWSServiceRoleForCloudWatchEvents を使用する必要があります。AWSServiceRoleForCloudWatchEvents IAM ロールを使用すると、AWS がお客様に代わってアラームアクションを実行できます。

CloudWatch Events のサービスにリンクされたロールを作成するには、次のコマンドを使用します。

aws iam create-service-linked-role --aws-service-name events.amazonaws.com
コンソールのサポート

CloudWatch コンソールまたは Amazon EC2 コンソールを使用してアラームを作成できます。このドキュメントの手順では、CloudWatch コンソールを使用します。Amazon EC2 コンソールを使用する手順については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスを停止、終了、再起動、または復旧するアラームを作成する」を参照してください。

許可

AWS Identity and Access Management (IAM) アカウントを使用して EC2 アクションまたは Systems Manager OpsItem アクションを実行するアラームを作成または変更する場合は、iam:CreateServiceLinkedRole 許可が必要です。

Amazon CloudWatch アラームへの停止アクションの追加

一定のしきい値に達したときに Amazon EC2 インスタンスを停止するアラームを作成できます。例えば、開発またはテスト用のインスタンスを実行したまま、終了するのを忘れることがたまにあります。平均 CPU 利用率が 24 時間 10% 未満である場合に、インスタンスがアイドル状態で使用されていないという信号を発してトリガーするアラームを作成できます。しきい値、持続時間、期間をニーズに合わせて調整し、アラームがトリガーされたときにメールを受信するよう SNS 通知を追加できます。

Amazon Elastic Block Store ボリュームをルートデバイスとして使用する Amazon EC2 インスタンスは停止または終了できますが、インスタンスストアをルートデバイスとして使用するインスタンスでは終了のみ行えます。

Amazon CloudWatch コンソールを使用してアイドル状態のインスタンスを停止させるアラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[アラーム]、[すべてのアラーム] の順に選択します。

  3. [アラームの作成] を選択します。

  4. [メトリクスの選択] を選択します。

  5. AWS 名前空間 の場合は、[EC2] を選択します。

  6. 次のコマンドを実行します

    1. [Per-Instance Metrics] (インスタンス別メトリクス) を選択します。

    2. 正しいインスタンスと CPUUtilization メトリクスを含む行のチェックボックスを選択します。

    3. [グラフ化したメトリクス] を選択します。

    4. 統計用には [Average] を選択します。

    5. 期間 (例: 1 Hour) を選択します。

    6. [Select metric] (メトリクスの選択) を選択します。

  7. [アラームの定義] ステップでは、以下の作業を行います。

    1. [Conditions (条件)] で、[Static (静的)] を選択します。

    2. [Whenever CPUUtilization is] (CPU 使用率が次の状態であるときは常に) で、[Lower] (より低い) を選択します。

    3. [than] (よりも) で、10 と入力します。

    4. [Next] (次へ) をクリックします。

    5. [通知] の [通知の送信先] で、既存の SNS トピックを選択するか、新しいトピックを作成します。

      SNS トピックを作成するには、[新しいリスト] を選択します。[通知の送信先] に、SNS トピックの名前を入力します (例: Stop_EC2_Instance)。[メールリスト] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。各 E メールアドレスに、トピックのサブスクリプションの確認メールが送信されます。E メールアドレスに通知を送信する前に、サブスクリプションを確認する必要があります。

    6. [Add EC2 Action] (EC2 アクションの追加) を選択します。

    7. [Alarm state trigger] (アラーム状態トリガー) で、[In alarm] (アラーム状態) を選択します。[Take the following action] (次のアクションを実行) で、[Stop this instance] (このインスタンスを停止する) を選択します。

    8. [Next] (次へ) をクリックします。

    9. アラームの名前と説明を入力します。名前には ASCII 文字のみを使用します。続いて、[次へ] を選択します。

    10. [Preview and create (プレビューして作成)] で、情報と条件が正しいことを確認し、[アラームの作成] を選択します。

Amazon CloudWatch アラームへの終了アクションの追加

(インスタンスで終了保護が有効になっていない限り)、一定のしきい値に達したときに EC2 インスタンスを自動的に終了させるアラームを作成することができます。たとえば、インスタンスが仕事を終え、再びそのインスタンスを使用する必要がない場合は、インスタンスを削除することをお勧めします。後でインスタンスを使用する可能性がある場合は、インスタンスを削除するのではなく、停止するほうが良いでしょう。インスタンスの終了保護の有効化または無効化については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「Enabling Termination Protection for an Instance」(インスタンスの終了保護の有効化) を参照してください。

Amazon CloudWatch コンソールを使用してアイドル状態のインスタンスを終了させるアラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Alarms]、[Create Alarm] の順に選択します。

  3. [メトリクスの選択] ステップでは、以下の作業を行います。

    1. [EC2 メトリクス] で、[インスタンス別メトリクス] を選択します。

    2. インスタンスおよび CPUUtilization メトリクスがある行を選択します。

    3. 統計用には [Average] を選択します。

    4. 期間 (例: 1 Hour) を選択します。

    5. [Next] (次へ) をクリックします。

  4. [アラームの定義] ステップでは、以下の作業を行います。

    1. [アラームのしきい値] で、アラームの一意の名前 (例: Terminate EC2 instance) と、アラームの説明 (例: Terminate EC2 instance when CPU is idle for too long) を入力します。アラーム名には ASCII 文字のみを使用する必要があります。

    2. [次の時] の [が:] で [<] を選択し、「10」と入力します。[期間] で、連続した期間として「24」を入力します。

      しきい値がグラフ化されて [アラームのプレビュー] に表示されます。

    3. [通知] の [通知の送信先] で、既存の SNS トピックを選択するか、新しいトピックを作成します。

      SNS トピックを作成するには、[新しいリスト] を選択します。[通知の送信先] に、SNS トピックの名前を入力します (例: Terminate_EC2_Instance)。[メールリスト] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。各 E メールアドレスに、トピックのサブスクリプションの確認メールが送信されます。E メールアドレスに通知を送信する前に、サブスクリプションを確認する必要があります。

    4. [EC2 アクション] を選択します。

    5. [アラームが次の時] で [状態: 警告] を選択します。[次のアクションを実行] で [このインスタンスの削除] を選択します。

    6. [Create Alarm] (アラームの作成) を選択します。

Amazon CloudWatch アラームへの再起動アクションの追加

Amazon EC2 インスタンスをモニターリングし、自動的に再起動する Amazon CloudWatch アラームを作成できます。再起動アラームアクションは、インスタンスのヘルスチェックが失敗した場合に推奨されます (システムのヘルスチェックが失敗した場合には、復旧アラームアクションが推奨されます) 。インスタンスの再起動は、オペレーティングシステムの再起動と同等です。ほとんどの場合、インスタンスの再起動には数分しかかかりません。インスタンスを再起動すると、インスタンスは同じホスト上で保持されるため、インスタンスのパブリック DNS 名、プライベート IP アドレス、およびインスタンスストアボリューム上のすべてのデータは保持されます。

インスタンスを再起動しても、インスタンスの停止と再起動とは異なり、新しいインスタンスの課金時間は開始されません。インスタンスの再起動についての詳細は、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスの再起動」を参照してください。

重要

再起動と復旧アクション間で不具合が発生するのを回避するには、再起動アラームと復旧アラームを同じ検査期間に設定するのを避けます。再起動アラームを各 1 分間の 3 回の評価期間に設定することをお勧めします。

Amazon CloudWatch コンソールを使用してインスタンスを再起動するアラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Alarms]、[Create Alarm] の順に選択します。

  3. [メトリクスの選択] ステップでは、以下の作業を行います。

    1. [EC2 メトリクス] で、[インスタンス別メトリクス] を選択します。

    2. インスタンスおよび StatusCheckFailed_Instance メトリクスがある行を選択します。

    3. 統計用には [Minimum] を選択します。

    4. 期間を選択し ([1 Minute] など)、[次へ] を選択します。

  4. [アラームの定義] ステップでは、以下の作業を行います。

    1. [アラームのしきい値] で、アラームの一意の名前 (例: Reboot EC2 instance) と、アラームの説明 (例: Reboot EC2 instance when health checks fail) を入力します。アラーム名には ASCII 文字のみを使用する必要があります。

    2. [次の時] の [が:] で [>] を選択し、「0」と入力します。[期間] で、連続した期間として「3」を入力します。

      しきい値がグラフ化されて [アラームのプレビュー] に表示されます。

    3. [通知] の [通知の送信先] で、既存の SNS トピックを選択するか、新しいトピックを作成します。

      SNS トピックを作成するには、[新しいリスト] を選択します。[通知の送信先] に、SNS トピックの名前を入力します (例: Reboot_EC2_Instance)。[メールリスト] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。各 E メールアドレスに、トピックのサブスクリプションの確認メールが送信されます。E メールアドレスに通知を送信する前に、サブスクリプションを確認する必要があります。

    4. [EC2 アクション] を選択します。

    5. [アラームが次の時] で [状態: 警告] を選択します。[次のアクションを実行] で [このインスタンスの再起動] を選択します。

    6. [Create Alarm] (アラームの作成) を選択します。

Amazon CloudWatch アラームへの復旧アクションの追加

Amazon EC2 インスタンスをモニターリングする Amazon CloudWatch アラームを作成できます。この機能により、基盤ハードウェアの障害や、AWS による修復を必要とする問題によりインスタンスが正常に機能しなくなった場合に、自動的にそのインスタンスを復旧できます。終了したインスタンスは復旧できません。復旧されたインスタンスは、インスタンス ID、プライベート IP アドレス、Elastic IP アドレス、すべてのインスタンスメタデータを含め、元のインスタンスと同じです。

StatusCheckFailed_System アラームがトリガーされ、復旧アクションが開始されると、アラームを作成したときに選択し、復旧アクションに関連付けた Amazon SNS トピックによって通知されます。インスタンスを復旧する際、インスタンスを再起動するときにインスタンスは移行され、メモリ内にあるデータは失われます。プロセスが完了すると、情報はアラームに設定された SNS トピックに発行されます。この SNS トピックにサブスクライブされるすべてのユーザーは、復旧処理のステータスと、それ以降の手順を含むメールの通知を受け取ります。復旧されたインスタンスでインスタンスが再起動されたことがわかります。

復旧アクションは、StatusCheckFailed_System でのみ使用できます。StatusCheckFailed_Instance では使用できません。

システムステータスチェックの失敗の原因となる問題には、次のようなものがあります。

  • ネットワーク接続の喪失

  • システム電源の喪失

  • 物理ホストのソフトウェアの問題

  • ネットワーク到達可能性に影響する、物理ホスト上のハードウェアの問題

復旧アクションは、一部のインスタンスタイプでのみサポートされています。サポートされているインスタンスタイプとその他の要件についての詳細は、「インスタンスの復旧」および「要件」を参照してください。

重要

再起動と復旧アクション間で不具合が発生するのを回避するには、再起動アラームと復旧アラームを同じ検査期間に設定するのを避けます。復旧アラームを各 1 分間の 2 つの評価期間に設定し、再起動アラームを各 1 分間の 3 つの評価期間に設定することをお勧めします。

Amazon CloudWatch コンソールを使用してインスタンスを復旧するアラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Alarms]、[Create Alarm] の順に選択します。

  3. [メトリクスの選択] ステップでは、以下の作業を行います。

    1. [EC2 メトリクス] で、[インスタンス別メトリクス] を選択します。

    2. インスタンスおよび StatusCheckFailed_System メトリクスがある行を選択します。

    3. 統計用には [Minimum] を選択します。

    4. 期間 (例: 1 Minute) を選択します。

      重要

      再起動と復旧アクション間で不具合が発生するのを回避するには、再起動アラームと復旧アラームを同じ検査期間に設定するのを避けます。復旧アラームを各 1 分間の 2 回の評価期間に設定することをお勧めします。

    5. [Next] (次へ) をクリックします。

  4. [アラームの定義] ステップでは、以下の作業を行います。

    1. [アラームのしきい値] で、アラームの一意の名前 (例: Recover EC2 instance) と、アラームの説明 (例: Recover EC2 instance when health checks fail) を入力します。アラーム名には ASCII 文字のみを使用する必要があります。

    2. [次の時] の [が:] で [>] を選択し、「0」と入力します。[期間] で、連続した期間として「2」を入力します。

    3. [通知] の [通知の送信先] で、既存の SNS トピックを選択するか、新しいトピックを作成します。

      SNS トピックを作成するには、[新しいリスト] を選択します。[通知の送信先] に、SNS トピックの名前を入力します (例: Recover_EC2_Instance)。[メールリスト] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。各 E メールアドレスに、トピックのサブスクリプションの確認メールが送信されます。E メールアドレスに通知を送信する前に、サブスクリプションを確認する必要があります。

    4. [EC2 アクション] を選択します。

    5. [アラームが次の時] で [状態: 警告] を選択します。[次のアクションを実行] で [このインスタンスの復元] を選択します。

    6. [Create Alarm] (アラームの作成) を選択します。

トリガーされたアラームとアクションの履歴の表示

Amazon CloudWatch コンソールで、アラームとアクションの履歴を表示できます。Amazon CloudWatch は、過去 2 週間分のアラームとアクションの履歴を保持します。

トリガーされたアラームとアクションを表示するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで [アラーム] を選択し、アラームを選択します。

  3. 直近の状態遷移、および時間とメトリクス値を表示するには、[詳細] を選択します。

  4. 直近の履歴のエントリを表示するには、[履歴] を選択します。