Amazon Web Services ブログ
AWS Systems Manager Automation と CloudWatch アラームで、ディスク容量不足によるパッチ適用の失敗を回避する
全ての組織はパッチを適用してシステム群を最新の状態に保つ必要がある一方、パッチ適用がビジネスやワークロードに影響を与えてはなりません。運用チームにとってのチャレンジの 1 つは、本番環境のソフトウェアに影響を与えずにパッチを適用する事です。パッチ適用が失敗する最も一般的な理由は、ディスク容量の不足、CPU 使用率の急上昇、メモリ使用率の高騰です。失敗を避けるためには、パッチ適用中のワークロードを監視する必要があります。AWS Systems Manager Automation と Amazon CloudWatch アラームを組み合わせる事で、これを実現できます。AWS Systems Manager に、タスク制御の為の CloudWatch アラーム設定を追加すると、CloudWatch アラームがアラーム状態の時にパッチの自動適用を停止させる事が出来る様になります。マルチリージョン・マルチアカウント構成でも、この機能を利用する事が出来ます。
ソリューションの概要
このソリューションのステップは以下の通りです。
- Step 1: Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動し、Amazon CloudWatch Agent をインストールします。
- Step 2: ディスクの空き容量を監視する、CloudWatch アラームを設定します。
- Step 3: 安全制御の為に CloudWatch アラームを参照先として追加し、Automation コンソールからパッチを適用します。
- Step 4: テストと検証を行います。
Step 1: EC2 インスタンスの起動
EC2 インスタンスを起動します。このブログでは、スモールインスタンス(t3.small)の Amazon Linux 2 を利用しています。インスタンス起動中はコストが発生しますので、ご注意ください。https://aws.amazon.com/premiumsupport/knowledge-center/delete-terminate-ec2/
Step 2: CloudWatch アラームを設定し、ディスクの使用量を監視
まず、ディスク容量を監視する為に、CloudWatch アラームの設定を行います。
- EC2 インスタンスに CloudWatch エージェントをインストールします。CloudWatch エージェントは、Amazon Linux 2 のパッケージとして提供されています。以下のコマンドを実行すると、パッケージをインストールする事が出来ます。
Windows の場合
AWS Systems Manager を使用して、CloudWatch エージェントをインストールする事も出来ます。
- マネージドポリシーである CloudWatchAgentServerPolicy を持った IAM ロールをインスタンスにアタッチしておく必要があります (訳者注 : AmazonSSMManagedInstanceCore がアタッチされていなければ、合わせてアタッチしてください)。詳細は Amazon EC2 インスタンスの CloudWatch エージェントで使用する IAM ロールを作成する と Systems Manager の IAM インスタンスプロファイルを作成する を参照して下さい。
- インストール後、手動またはウィザードを利用して設定ファイルを作成します。
- コマンドラインを使用して、CloudWatch エージェントを起動します。
※ configuration-file-path は、ウィザード内の出力で確認する事ができます
(例) The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Linux の場合
Windows の場合
- ディスクの空き容量が 10% 以下 (またはユースケースに応じた閾値) まで低下したらアラーム状態となる CloudWatch アラームを、アラーム名「LowDiskSpace」として作成します。
Step 3: Automation の安全制御の為に CloudWatch アラームを追加
- AWS Systems Manager のコンソールで、「変更管理」配下に表示されている「オートメーション」を選択します。
- 「オートメーションの実行」をクリックし、左側のナビゲーションに表示されている「Patching」を選択します。
- 「AWS-PatchInstanceWithRollback」を選択し、「次へ」をクリックします。
- 「シンプルな実行」を選択します。他の実行タイプでも、CloudWatch アラームでの安全制御を使用する事が出来ます。
- 「入力パラメータ」で、対象のインスタンスを選択します。
- 「CloudWatch alarm – オプション」で、Step 2 の 5 で作成した「LowDiskSpace」アラームを選択します。
※ CloudWatch アラームがアラーム状態の場合、選択ができません
- 「実行」をクリックして、パッチ適用が成功する事を確認します。
※ アラームを選択した後から「実行」をクリックするまでの間に、対象のアラームがアラーム状態に遷移した場合は実行する事ができません
Step 4 テストと検証
AWS Systems Manager State Manager を使用して、CloudWatch アラームによる安全制御をシミュレートします。
- AWS Systems Manager コンソールの「ノード管理」配下に表示されている「ステートマネージャー」を選択します。
- 「関連付けの作成」をクリックし、「TestCloudWatchAlarm」と名前を付け、「AWS-PatchInstanceWithRollback」runbook を選択します。
- 「入力パラメーター」の「InstanceId」で対象のインスタンスを指定し、「AutomationAssumeRole」でオートメーション(自動化)がユーザーに変わって処理を実行できる権限(ロール)を選択します。
- 「スケジュールを指定」で「Rate スケジュールビルダー」を選択し、「毎 30 分」と設定します。
- 「CloudWatch alarm – オプション」で、Step 2 の 5 で作成した「LowDiskSpace」アラームを選択し、「関連付けの作成」をクリックします。
- 関連付けは即座に実行されるので、「ステータス」が「成功」に遷移するまで待ちます。
- CloudWatch アラームの設定に移動し、閾値を調整して強制的にアラーム状態にします。アラーム状態の間は関連付けが実行されないことを確認してください。
Cleanup
不要なコストを防ぐ為に、EC2 インスタンス、CloudWatch アラーム、ステートマネージャーの関連付けを削除します。EC2 インスタンスの削除は「Amazon EC2 リソースを削除または終了する方法を教えてください。」、CloudWatch アラームの削除は「CloudWatch アラームの編集または削除」、ステートマネージャーの関連付けの削除は「関連付けを削除する」を参照して下さい。
まとめ
EC2 インスタンスのディスク容量を監視する CloudWatch アラームを作成して、AWS Systems Manager オートメーションによるパッチ適用を安全制御する方法について学びました。この機能は、CloudWatch アラームがアラーム状態では無い場合のみ、オートメーションが実行できる安全制御を提供します。マルチリージョンやマルチアカウントでも、この機能を利用する事が出来ます。この機能を利用して、ビジネス上の課題を解決される事を期待しています。AWS Systems Manager Automation の詳細につきましては「AWS Systems Manager Automation」を参照して下さい。Automation runbook の書き方につきましては「Writing your own AWS Systems Manager documents」を参照して下さい。
著者について:
翻訳はソリューションアーキテクトの渡邊が担当しました。原文はこちら。