やりたいこと
プライベートサブネットにおいたEC2から、Cloudwatchへログを飛ばしたい
※Cloudwatch agentをEC2にインストールしている前提で。
普通にできそうじゃない…?
Cloudwatch agentからCloudwatchに飛ばすとなると、1回外へ出ていこうとする。
プライベートサブネットは外へ出る足がないので、サブネットの中で糞詰まってしまう。
やりかた
- 前提:Cloudwatchに、飛ばしたいログを受けとるためのロググループを作成済みであること
-
セキュリティグループを作成する
-
EC2をsourceとした443のinbound通信を受けられるルールを作成する
-
VPCエンドポイントを作成する
VPC → エンドポイントを選択
エンドポイントの作成を選択
どのサービス用のエンドポイントであるかを指定する
Cloudwach Logs用なので、com.amazonaws.リージョン名.logsを選択する
logsで検索すれば出てくる
検索して出てきたエンドポイントを選択する
すると、VPC、サブネット、セキュリティグループ等々が選択できるようになる
VPCとサブネットの選択
ログを飛ばしたいEC2が存在するVPCを選択する。サブネットも同様。
セキュリティグループの選択
1番で作成したセキュリティグループを選択する
file_config.jsonに"endpoint_override"を追記する
AWSのリファレンスによるとこんな設定が必要とのこと。
CloudWatch エージェント設定ファイルを手動で作成または編集する
ちょっと何言ってるがよくわからないが、この赤枠の値をfile_config.jsonに書けばOK
file_config.jsonはコチラ↓
/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d
最後に、Cloudwatchで飛ばしたかったログが飛んできてるか確認する。
普通にCloudwatch見るだけなので省略。
以上