CloudWatchエージェントのインストールを行い、AWSマネジメントコンソールからnginxのアクセスログやエラーログが確認できるようにする手順をまとめました。
1) ロールを作成する
EC2へアタッチするCloudWatchエージェント用のロールを作成します。
マネジメントコンソールで、IAM > ロール を選択します。



「ロールの作成」ボタンをクリックします。



EC2を選択し、「次のステップ:アクセス権限」をクリックします。



検索用のテキストボックスへアタッチするポリシー名を入れ、チェックを入れます。
選択するポリシーは「CloudWatchAgentServerPolicy」「AmazonEC2RoleforSSM」
「AmazonSSMReadOnlyAccess」の3つです。
3つのポリシーにチェックを入れたら「次のステップ:タグ」をクリックします。



タグを追加する場合は、キーと値を入力し、「次のステップ:確認」ボタンをクリックします。



ロール名を入力して「ロールの作成」をクリックします。
2) ロールをEC2へアタッチする
マネジメントコンソールで、IAM > EC2 > インスタンス を選択します。



nginxのログを取得したいインスタンスを選択し、上部の「アクション」ボタン > インスタンスの設定 > IAMロールの割り当て/置換 を選択します。



IAMロールで先ほど作成したロールを選択し、「適用」ボタンをクリックします。
3) 設定ファイルを作成する
CloudWatchエージェントが読み込む設定ファイルを作成します。
マネジメントコンソールで、System Manager > パラメータストア を選択し、「パラメータの作成」ボタンをクリックします。



名前、説明、値の入力を行います。
名前は、わかりやすい文字列を入力します。今回は”CloudWatchAgentParameter”として、説明も名前と同じにしました。
値には、以下の通りnginxのログを取得する設定を入力しました。
{
"agent": {
"metrics_collection_interval": 60,
"region": "ap-northeast-1",
"logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log",
"debug": false
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/nginx/access.log",
"log_group_name": "nginx_access_log",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/nginx/error.log",
"log_group_name": "nginx_error_log",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
※値の入力ボックスが狭いのでこの画面上で入力/編集するのは結構大変です。
一度テキストエディタで編集して確認してからコピーして貼り付けが楽です。
4) CloudWatchエージェントをインストールする
ログ取得を行いたい対象のEC2へログインし、コマンドからCloudWatchエージェントのインストールを行います。
$ wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
$ sudo rpm -U ./amazon-cloudwatch-agent.rpm
System Managerで作成した設定ファイルを指定して起動します。
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:CloudWatchAgentParemeter -s
※停止を行う時は以下のコマンドを実行します。
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
5) 確認
nginxのログをマネジメントコンソールから見ることができるか確認します。
マネジメントコンソールから、 CloudWatch > ロググループを選択します。



nginxのロググループが作成されていることを確認します。
nginx_access_logをクリックします。



ログストリームにインスタンスIDが追加されていることを確認します。
インスタンスIDをクリックします。



nginxのアクセスログがコンソールから確認できました!



アクセスログなど、ログが大量にある場合は最新のログにたどり着くまで読み込みに時間がかかるので、表示する時間を相対値5分などに設定すると最新ログの確認がしやすかったです。
参考サイト

