困っていること
Amazon EC2 Windows インスタンスでCloudWatch カスタムメトリクスを取得するため、 CloudWatch Agentをインストールしました。
CloudWatch Agentを起動後、カスタムメトリクスは取得されましたが、EC2 Windows インスタンスを再起動すると、CloudWatch Agentも自動起動されますでしょうか?
どう解決すればいいの?
EC2 Windows インスタンスでCloudWatch Agentがデフォルトで自動起動するかどうかは、ドキュメントに明確な記載がありません。
EC2 Windows インスタンスで CloudWatch Agentの自動起動設定を確認するには、以下の手順で行います。
検索ボックスからServices
を入力し開きます。(以下の画面は英語表記になっています)
Amazon CloudWatch Agent
の Startup type
が Automatic
になっていれば、自動起動が有効化されている状態です。この場合、EC2 Windows インスタンスを再起動すると、CloudWatch Agent も自動的に起動します。
自動起動設定を無効化することも可能です。
なお、以下のAMIを使用して EC2 インスタンスを作成し、CloudWatch Agent をインストールした場合、デフォルトで自動起動設定が有効になっていることを確認しました。
- Microsoft Windows Server 2022 Base(AMI:ami-04f69ab2dd2960278)
CloudWatch Agentをインストールから起動までの流れは、以下の通りです。
- EC2インスタンス作成
- CloudWatch Agentインストール
- CloudWatch Agent設定ファイルを作成
- CloudWatch Agent起動
EC2インスタンス作成
AMIは以下を利用しました。
- Microsoft Windows Server 2022 Base(AMI:ami-04f69ab2dd2960278)
IAMポリシーは、以下をアタッチします。
- AmazonSSMManagedInstanceCore
- CloudWatchAgentServerPolicy
プライベートサブネット上でインスタンスを作成し、以下のVPCエンドポイントも作成しました。
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ec2messages
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2
- com.amazonaws.ap-northeast-1.monitoring
CloudWatch Agentインストール
インストール方法はいくつかありますが、今回は、Systems Manager Run Commandを使用します。
ドキュメント通り、Run CommandからAWS-ConfigureAWSPackage
を選択し、名前にAmazonCloudWatchAgent
を入力し実行します。
成功していればインストール完了です。
CloudWatch Agent設定ファイルを作成
CloudWatch Agent設定ファイルの作成方法は、いくつかありますが、今回はウィザードを実行して作成します。
- ウィザードを実行する
- 手動で作成する
PowerShellで以下のコマンドを実行します。
cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
.\amazon-cloudwatch-agent-config-wizard.exe
いくつか質問に答えると設定ファイルが作成されます。
最後に設定ファイルをSystems Manager Parameter Storeに保存するか聞かれますが、今回は保存しません。
インスタンス内のC:\Program Files\Amazon\AmazonCloudWatchAgent\config.json
に設定ファイルが保存されます。
CloudWatch Agent 起動
PowerShellで以下を実行すると、CloudWatch Agentが起動します。先程作成した設定ファイルのパスが正しいかどうか確認しておきましょう。
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"
ちなみに、CloudWatch Agent設定ファイルをParameter Storeに保存した場合、PowerShellだけでなく、Run Commandからも実行可能です。
PowerShellの場合、以下のコマンド通り、Parameter Store名を指定して実行します。
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c ssm:パラメータストアの名前