【新機能】CloudWatchのアクションにEC2インスタンスの再起動が追加されました!
こんにちは、虎塚です。
AWSの新機能アップデートで、CloudWatchのアラート時アクションにリブートが追加されました。
概要
CloudWatchは、AWSサービスを監視するためのサービスです。あらかじめ閾値を設定することで、アラームが上がった時にメール通知やEC2の自動操作がおこなわれるように設定できます。
CloudWatchでアラームが上がった時のアクションとして、これまでインスタンス操作として設定できるのは、次の3種類でした。
- Stop
- Terminate
- Recover (Stop & Start)
Recoverは、インスタンスのStop/Startを意味します。詳細は、「【新機能】EC2 Cloudwatchの新機能「Auto Recovery」を使ってみた | Developers.IO」を参照ください。
今回の更新で、上記に加えてOSレベルでのRebootができるようになりました(インスタンスのStop/Startではないことに注意してください)。
OSがReboot(再起動)しても、EC2インスタンスが稼働する物理ホストは同一のままです。つまり、インスタンスの次の要素は、再起動の前後で維持されます。
- インスタンスのパブリックDNS名
- プライベートIPアドレス
- インスタンスストアボリューム内のデータ
実験
ひとまず、本機能が動くことを確認しました。
1. アラーム作成
EC2インスタンスを1台起動して、CPU使用率を監視するアラームを作成します。
アラームの作成画面で、[EC2 Actions]ボタンをクリックします。
[Reboot this instance]ラジオボタンを選択します。
初めてインスタンスアクションを設定しようとしたタイミングで、IAM Roleの追加を要求されます。このIAM Roleは、AWSがインスタンスにアクションする権限を定義したものです。次のポリシーを持つIAM Roleの追加を要求されます。ナビゲーションにしたがって作成しましょう。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": "*" } ] }
今回の実験では、すぐに結果を得るために、アラームの設定を次のようにしました。
- インスタンスの詳細モニタリングON -- これで、1分ごとに結果を得られます
- 5分の間に、CPU使用率の最大値が80%に1度なれば、アラーム状態とする
2. CPUを回す
インスタンスのCPU使用率が80%を超えるように、インスタンス内で操作します。インスタンスにログインして、次のコマンドを実行しました。
$ yes > /dev/null
3. アラーム発生とリブートを確認する
数分してからManagement Consoleを確認すると、アラームが上がっています。
CloudWatchコンソールでアラームの[History]タブを表示すると、再起動が記録されていました。
今回は、OK状態からALARM状態に遷移してから、リブートの完了までに、1分もかかりませんでした。なお、このアラームでは「5分間あたりの最大値」を見ているので、次の5分に入った後にALARM状態がOK状態に戻っています。
無事に自動リブートされました!
おわりに
便利な使い方は、これから検討していきたいと思います。インスタンス内部の状態が悪くなったらとりあえず再起動、といったことを手作業で実施している場面では、役に立つ機能ではないでしょうか。
それでは、また。