プライベートサブネット内のEC2インスタンスにAmazon CloudWatch Agentを導入し、Amazon CloudWatchで情報を取得する。
この記事はNHN テコラス Advent Calendar 2024の6日目の記事です。
はじめに
こんにちは、eunseoです!
本記事では、AWS Session Managerを利用して、プライベートサブネット内にのEC2インスタンスにCloudwatch Agentをインストールし、そのログ及びメトリクスをAmazon CloudWatchで取得する方法について紹介します。
構成図
今回の構成図となります。
まず、プライベートサブネット内のEC2インスタンスからCloudWatchにログを送信するために、CloudWatch用のVPCエンドポイントを作成します。
次に、SSM(Systems Manager)を使用してEC2インスタンスに接続し、インスタンス内にCloudWatch Agentをインストールします。
これにより、ログはVPCエンドポイントを通じてCloudWatchに送信されることができます。
事前準備
・SSMでAmazon EC2にアクセスするまでの手順は以下の記事を参考してください。
・インスタンスに以下のポリシーをアタッチします。(IAMロール)
CloudWatchAgentServerPolicy または CloudWatchAgentAdminPolicy
また、上記の記事の内容だけだと、SSMに接続ができない場合もあるため、以下のエンドポイントも追加します。
com.amazonaws.ap-northeast-1.s3 (ゲートウェイのタイプ)
手順
大まかな手順としては以下の流れです。
- VPCエンドポイントを作成
- CloudWatch Agentをインストール
- CloudWatchで確認
1.Cloudwatch用のエンドポイントを作成
CloudWatch AgentがCloudWatchへアクセスするために、VPCエンドポイントを設定します。
以下は、CloudWatchへのアクセスおよびログ出力に必要なサービスです。
・com.amazonaws.ap-northeast-1.monitoring:Cloudwatchのエンドポイント
・com.amazonaws.ap-northeast-1.ec2:EC2のエンドポイント
・com.amazonaws.ap-northeast-1.logs:Cloudwatch Logsのエンドポイント
VPCエンドポイントを作成① – monitoring
1.VPCエンドポイント → 「エンドポイントを作成」をクリックします。
2.名前を入力し、「AWSのサービス」を選択します。
3.必要となるエンドポイントに対応するサービス名を検索し、選択します。
4.自分のVPCを選択し、DNS名を有効化します。
※DNS名を有効化ができない場合
自分のVPCに移動し、「VPCの設定を編集」で「DNS設定」が有効化になっていることを確認します。
5.対象のインスタンスがあるプライベートサブネットを選択します。
6.事前準備で作成したエンドポイント用のセキュリティグループを選択します。
7.「エンドポイントを作成」をクリックします。
VPCエンドポイントを作成② – ec2
VPCエンドポイントを作成③ – logs
「VPCエンドポイントを作成① – monitoring」手順を繰り返しします。
2.CloudWatch Agentインストール
1.SSMを利用して、サーバーへ接続します。
2.Cloudwatch Agentをインストールします。
# dnf install amazon-cloudwatch-agent
Amazon Linux 以外の場合は、wgetコマンドやcurlコマンドを使用して、以下のリンクからパッケージをダウンロードし、インストールします。
公式ドキュメントのダウンロードリンク
3.Collectdをインストールします。
# dnf install collectd # systemctl start collectd # systemctl enable collectd
4.Cloudwatch Agentを開始します。
# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-linux # systemctl start amazon-cloudwatch-agent # systemctl enable amazon-cloudwatch-agent
3.Cloudwatchの出力確認
- Amazon Cloudwatchにコンソールに移動します。
- 「メトリクス」の項目で「すべてのメトリクス」をクリックします。
- 「CWAgent」を選択し、InstanceIdで自分のインスタンス名を検索すれば、確認できます。
まとめ
本記事では、AWS Session Managerを利用して、プライベートサブネット内のEC2インスタンスからログをAmazon CloudWatchに出力する方法について紹介しました。
なお、プライベートサブネット内にのEC2インスタンスのログをAmazon S3に保存する方法については、以下の記事をご覧ください。
最後まで読んでいただきありがとうございます!
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterRecommends
こちらもおすすめ
-
『生成 AI』における『ガードレール』とは?
2024.12.14
-
Terraform × GitHub Actionsでドリフト検出
2024.12.19
-
「クラウド月次キャッチアップ会」を半年やってみた所感をレポート!
2024.12.18
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16