0.事前準備
プライベートネットワークにCloudWatch Agentを設定するには事前に以下の設定が必要。
SSMに関してはこのページを見れば大体書いてあった
IAMポリシー
以下のIAMポリシーまたは同等のアクセス権限をロールに設定
ロールをEC2インスタンスに設定
- AmazonSSMFullAccess
- CloudWatchAgentAdminPolicy
- AmazonSSMManagedInstanceCore
- Amazon S3 バケットアクセスのカスタムポリシー
VPCエンドポイント
以下のVPCエンドポイントを作成する
- com.amazonaws.ap-northeast-1.s3
- 以下のPolicyの付与が必要
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": [
"arn:aws:s3:::aws-ssm-ap-northeast-1/*",
"arn:aws:s3:::aws-windows-downloads-ap-northeast-1/*",
"arn:aws:s3:::amazon-ssm-ap-northeast-1/*",
"arn:aws:s3:::amazon-ssm-packages-ap-northeast-1/*",
"arn:aws:s3:::ap-northeast-1-birdwatcher-prod/*",
"arn:aws:s3:::patch-baseline-snapshot-ap-northeast-1/*"
]
}
]
}
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ec2
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2messages
- com.amazonaws.ap-northeast-1.logs
- com.amazonaws.ap-northeast-1.monitoring
1.SSM Agentのインストール
rpmファイルを転送
踏み台サーバにログイン
踏み台サーバ上のamazon-ssm-agent.rpm
ファイルをscpコマンドで転送する。
-i
オプションで転送先にログインする鍵ファイルを指定。
$ scp -i ./.ssh/(鍵ファイル) amazon-ssm-agent.rpm xx.xx.xx.xx(転送先のIPアドレスを指定):~
SSM Agentのインストール
対象のサーバにログイン
yumでSSM Agentをインストールする。
sudo yum install -y amazon-ssm-agent.rpm
実行後、プロセスを確認。
$ ps -ef | grep ssm
SSM Agentが実行中かを確認
$ sudo systemctl status amazon-ssm-agent
サービスの状態がloadedの場合、しばらく待ってみる。
待っても状態が変わらない場合はサービス再起動してみる。
$ sudo systemctl restart amazon-ssm-agent
$ sudo systemctl status amazon-ssm-agent
コマンド実行確認
正常の場合、インスタンスの情報がjson形式で出力される。
$ aws ssm describe-instance-information --region ap-northeast-1
2. CloudWatch Agentのインストール
CloudWatch Agentのインストール
AWSマネジメントコンソール上から実行する方法と、AWS Cli からSSM経由でインストールする方法の2種類ある。
実行していることは同じなのでどちらから実行しても変わらない。
どちらも実行結果はAWSマネジメントコンソール上のAWS Systems Manager > Run Command > コマンドの履歴
から確認する。
AWSマネジメントコンソール上から実行する場合
-
AWS Systems Manager > Run Command
を選択する - [Run Command]ボタンをクリック
- 以下の通り画面に入力、[実行ボタン]をクリック
- コマンドドキュメント:AWS-ConfigureAWSPackage
- Action : Install
- InstallType : Uninstall and reinstall
- Name : AmazonCloudWatchAgent
- Version : latest
- ターゲット : インストール対象のインスタンスを選択
AWS Cli からSSM経由でインストールする場合
以下のコマンドを実行する
$ aws ssm send-command --document-name "AWS-ConfigureAWSPackage" --targets "Key=instanceids, Values=インストール対象のインスタンスID" --parameters "action=Install, name=AmazonCloudWatchAgent, version=latest" --region ap-northeast-1
複数インスタンスを指定する場合は↓のように--tergets
オプションをリストで指定する
--targets '[{"Key":"InstanceIds","Values":["i-0afe0f5db00eca047","i-0504252b3c897c5e3","i-0412016fa9cb0c9a5"]}]'
CloudWatch Agent 実行設定
AWSマネジメントコンソール上から実行する方法と、AWS Cli からSSM経由でインストールする方法の2種類ある。
実行していることは同じなのでどちらから実行しても変わらない。
どちらも実行結果はAWSマネジメントコンソール上のAWS Systems Manager > Run Command > コマンドの履歴
から確認する。
AWSマネジメントコンソール上から実行する場合
-
AWS Systems Manager > Run Command
を選択する - [Run Command]ボタンをクリック
- 以下の通り画面に入力、[実行ボタン]をクリック
- コマンドドキュメント:AmazonCloudWatch-ManageAgent
- Action : configure
- Mode : EC2
- optional Configure Source : ssm
- optional Configuration Location : AmazonCloudWatch-linux
- optional Restart : yes
- ターゲット : インストール対象のインスタンスを選択
AWS Cli からSSM経由でインストールする場合
以下のコマンドを実行する
$ aws ssm send-command --document-name "AmazonCloudWatch-ManageAgent" --targets "Key=instanceids,Values=インストール対象のインスタンスID" --parameters "action=configure, mode=ec2, optionalConfigurationSource=ssm, optionalConfigurationLocation=AmazonCloudWatch-linux, optionalRestart=yes" --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region ap-northeast-1
ここまで設定すると、CloudWatch のログやメトリクスに設定したインスタンスから収集した情報が表示される。
表示されない場合、SSM AgentやCloudWatch Agentのログに何らかのエラーが出ている可能性がある。
何かあった時に見るログ
SSMのログ
/var/log/amazon/ssm/amazon-ssm-agent.log
CloudWatch Agentのログ
/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log