Amazon CloudWatch
ユーザーガイド

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

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

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

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

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

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

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) アカウントを使用してアラームを作成または変更する場合、次のアクセス権限が必要です。

  • iam:CreateServiceLinkedRoleiam:GetPolicyiam:GetPolicyVersion、および iam:GetRole — Amazon EC2 アクションでのすべてのアラーム用

  • ec2:DescribeInstanceStatusec2:DescribeInstances — Amazon EC2 インスタンスステータスメトリクスに対するすべてのアラーム用。

  • ec2:StopInstances — 停止アクションを含むアラーム用。

  • ec2:TerminateInstances — 終了アクションを含むアラーム用。

  • 復旧アクションを含むアラームに特別なアクセス許可は不要です。

読み取り/書き込み許可が Amazon CloudWatch にはあり、Amazon EC2 にはない場合でもアラームは作成できますが、インスタンスで停止または終了アクションは実行されません。ただし、関連付けられている Amazon EC2 API アクションの使用許可が後で付与されると、以前に作成したアラームアクションが実行されます。詳細については、IAM ユーザーガイド の「アクセス権限とポリシー」を参照してください。

IAM ロールに基づいて、アラームアクションを使用してインスタンスを停止、終了、または再起動する場合は、AWSServiceRoleForCloudWatchEvents ロールしか使用できません。他の IAM ロールはサポートされていません。ただし、アラームの状態を確認して、Amazon SNS 通知や Amazon EC2 Auto Scaling ポリシーなど、その他のアクションを実行することはできます。

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

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

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

Amazon CloudWatch コンソールを使用してアイドル状態のインスタンスを停止させるアラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

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

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

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

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

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

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

    5. [次へ] を選択します。

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

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

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

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

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

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

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

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

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

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

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

Amazon CloudWatch コンソールを使用して、アイドル状態のインスタンスを削除するアラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

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

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

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

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

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

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

    5. [次へ] を選択します。

  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. [アラームの作成] を選択します。

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

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

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

重要

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

Amazon CloudWatch コンソールを使用して、インスタンスを再起動するアラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

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

  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 トピックの名前を入力します (例: Stop_EC2_Instance)。[メールリスト] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。各 E メールアドレスに、トピックのサブスクリプションの確認メールが送信されます。E メールアドレスに通知を送信する前に、サブスクリプションを確認する必要があります。

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

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

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

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

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

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

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

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

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

  • システム電源の喪失

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

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

復旧アクションは、次のインスタンスタイプでのみサポートされています。

  • A1、C3、C4、C5、C5n、M3、M4、M5、M5a、R3、R4、R5、R5a、T2、T3、X1、および X1e の各インスタンスタイプ

  • VPC のインスタンス

  • default または dedicated のインスタンステナント属性があるインスタンス

  • Amazon EBS ボリュームのみを使用するインスタンス (インスタンスストアボリュームは設定しないでください)。

インスタンスにパブリック IPv4 アドレスが割り当てられている場合、そのパブリック IP アドレスは復旧後も保持されます。

重要

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

Amazon CloudWatch コンソールを使用して、インスタンスを復旧するアラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

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

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

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

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

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

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

      重要

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

    5. [次へ] を選択します。

  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. [アラームの作成] を選択します。

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

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

トリガーされたアラームとアクションを表示するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

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

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

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