ClouldWatchアラームでEC2インスタンスのステータスチェックを使用して、自動でリカバリーしてみた。

2021.10.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

EC2ステータスアラームとは?

EC2は、インスタンスステータスモニタリングを使用して、インスタンスに影響を与える可能性のある問題を検出します。ハードウェアとソフトウェアの問題を見つけるために、EC2はすべてのインスタンスで毎分自動的にチェックを実行します。

  • ステータスチェック:OK - すべてのチェックに成功すると、ステータスがOKになります。
  • ステータスチェック : impaired  - 1つ以上のチェックが失敗すると、ステータスがimpairedになります。

EC2 インスタンスをモニタリングするために、Amazon CloudWatch アラームを作成して、自動的にimpairedインスタンスを復旧します。ステータスチェックは2つのタイプがあります。

  • システムステータスチェック
  • インスタンスステータスチェック

 

システムステータスチェック

インスタンスが実行されているAWSシステムは、システムステータスチェックによってモニタリングされます。システムステータスチェックは、フィジカルホスト上のソフトウェアとハードウェアの問題をモニタリングします。

 

ホストの問題の例

  • 物理ホストのソフトウェアの問題
  • ネットワーク接続の喪失
  • システム電源の喪失
  • ネットワーク到達可能性に影響する、物理ホスト上のハードウェアの問題

 

問題を解決する方法

システムステータスチェックは失敗になった時、問題を解決するには2つの方法があります。

  • AWS がホスト問題を解決するまで待ちます。
  • EBS でバックアップされたインスタンスの場合は、インスタンスをSTOPとSTARTして、インスタンスを新しいホストに移動します。

 

CloudWatchメトリクス

システムステータスチェックのCloudWatchメトリクス : StatusCheckFailed_System

 

 

インスタンスステータスチェック

インスタンスステータスチェックは、各インスタンスのソフトウェア/ネットワーク設定をモニタリングします。インスタンスステータスチェックが失敗になった時、自分で 問題に対処する必要があります。

 

問題の例

  • メモリの枯渇
  • 破損したファイルシステム
  • 失敗したシステムステータスチェック
  • 正しくないネットワークまたは起動設定

 

問題を解決する方法

  • インスタンスを再起動します。
  • インスタンス設定を変更します。

 

CloudWatchメトリクス

インスタンスステータスチェックのCloudWatchメトリクス : StatusCheckFailed_Instance

 

やってみた

 

ステータスチェックの表示

  • EC2インスタンスを作成しておきます。
  • インスタンスを選択して、「Status checks」のタブを選択したら、特定のインスタンスのステータスを見ることが出来ます。
    開始時はアラームは作されていませんので、アラームステータスは「No alarms」です。これは、Consoleからのステータスチェックです。

 

 

  • CLIコマンドによるステータスチェック
aws ec2 describe-instance-status --instance-ids [Id of the instance] --region us-east-1

 

CloudWatchアラームの作成

  • Status checksのタブで、「Create status check alarm」を選択しておきます。
  • 「Create an alarm」を選択して 、「Alarm action」には「Reboot- インスタンスステータスチェックのために」を選択します。

 

 

  • 「Type of data」は「Status check failed: Instance」を選択して、アラームを作成しておきます。

 

アラームを設定して確認する

 

  • CLIからアラームを設定しておきます。このコマンドはアラームを作成します。
aws cloudwatch set-alarm-state 
--alarm-name awsec2-i-12345678dfghguh-GreaterThanOrEqualToThreshold-StatusCheckFailed_Instance 
--state-value ALARM 
--state-reason "instance reboot action testing" 
--region us-east-1

 

  • このコマンドを実行すると、CloudWatchアラームがトリガーされて、インスタンスが自動的に「Reboot」されます。
  • アラームステータスのインスタンス

 

  • CloudWatchアラームの状態は「In alarm」になります。

 

  • 自動的な「Reboot」の後、インスタンスは「OK」ステータスになります。

 

  • アラームの状態も「OK」になります。ステータス変更のイベントは、CloudWatchアラームの履歴 で見ることができます。

まとめ

CloudWatchを介してEC2インスタンスのステータスをモニタリングしてみました。また、「Recover - システムステータスチェック」を使用して自動でリカバリーをすることも可能です。