手順
以下の手順に沿って実施することでCloudWatchを利用したプロセス監視を設定することが可能。
- IAMポリシー、IAMロールの設定
- Systems Manager(Run Command)によるCloudWatchエージェントインストール
- CloudWatchエージェントの設定ファイル作成
- Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動
- プロセス監視の閾値設定
1. IAMポリシー、IAMロールの設定
監視対象のEC2インスタンスに対して、以下のIAMポリシーが紐づくIAMロールを設定する。
- CloudWatchAgentServerPolicy
- AmazonSSMManagedInstanceCore
補足
IAMポリシー「AmazonSSMManagedInstanceCore」は、Systems ManagerのRun Commandを利用しEC2インスタンスにcloudwatchエージェントをインストールするために必要。
IAMポリシー「CloudWatchAgentServerPolicy」は、CloudWatchにメトリクスを書き込むために必要となる。
監視対象のEC2インスタンスにて「amazon-cloudwatch-agent-config-wizard」コマンドを利用して作成した設定ファイルをパラメータストアに配置する場合、IAMポリシー「CloudWatchAgentAdminPolicy」もIAMロールに紐づける必要がある。
2. Systems Manager(Run Command)によるCloudWatchエージェントインストール
Run Commandにて以下を設定した上で「実行」を押下する。
以下、設定を行う上で特に注意する箇所について設定値を記載する。
コマンドドキュメント
名前:「AWS-ConfigureAWSPackage」
コマンドのパラメータ
Name:「AmazonCloudWatchAgent」
Version:「latest」
ターゲット
出力オプション
3. CloudWatchエージェントの設定ファイル作成
パラメータストアでCloudWatchAgentで利用するための設定ファイルを手動作成する。
値は以下を参照。
{
"metrics": {
"metrics_collected": {
"procstat": [
{
"pid_file": "/var/run/nginx.pid",
"measurement": [
"pid_count"
],
"metrics_collection_interval": 60
}
]
}
}
}
補足
監視対象のEC2インスタンスにて、amazon-cloudwatch-agent-config-wizardコマンドでも設定ファイルを作成することは可能。
しかし、簡易的な設定ファイルの場合は、パラメータストアで作成する方が楽であると考え、当手順ではその方法を利用しないで進めている。
4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動
Run Commandにて以下を設定した上で「実行」を押下する。
以下、設定を行う上で特に注意する箇所について設定値を記載する。
コマンドドキュメント
名前:「AmazonCloudWatch-ManageAgent」
コマンドのパラメータ
Action: 「configure」
Optional Configuration Location:「nginx-process」※任意の値にすること
補足
Cloudwatchエージェントステータス確認
実行後、EC2インスタンスにてCloudwatchエージェントのステータスを確認すると起動で表示される。
[root@ip-10-0-1-240 ~]# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
{
"status": "running",
"starttime": "2022-12-31T07:32:23+0000",
"configstatus": "configured",
"version": "1.247357.0b252275"
}
エラー「RequestError: send request failed」
CloudWatchエージェントログ「/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log」を確認した際に以下のエラーが表示されている場合、CloudwatchエージェントとCloudWatch側で通信出来ていないため、VPCエンドポイント「com.amazonaws.ap-northeast-1.monitoring」を作成する必要がある。このVPCエンドポイントはインターフェース型であるため、セキュリティグループの設定が必要となる。インバウンドルールのポート番号は「TCP:443」、ソースは、監視対象のEC2インスタンスのサブネットIP又はセキュリティグループを指定することで疎通可能となる。
2022-12-31T03:24:03Z E! cloudwatch: WriteToCloudWatch failure, err: RequestError: send request failed
caused by: Post "https://monitoring.ap-northeast-1.amazonaws.com/": dial tcp 52.119.222.42:443: i/o timeout
CloudWatchによるメトリクス確認
上記「4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動」設定後、しばらくするとCloudWatchによりメトリクスが設定される。
5. プロセス監視の閾値設定
上記「4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動」設定後に反映されたメトリクスを選択する。
あらかじめSNSトピック、サブスクリプションを作成した上で選択する。
役立ちコマンド
Cloudwatchエージェントのステータス確認
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
Cloudwatchエージェントの実行ログ確認
tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
参考