Amazon Web Services ブログ
ハイブリッド環境の運用・監視の実現 – 閉域網で AWS Systems Manager と Amazon CloudWatch を構成する
こんにちは。ソリューションアーキテクトの村田と申します。
昨今オンプレミスとクラウドを併用した環境が多く、運用・監視の仕組みを集約したいと考えたことはないでしょうか。私がソリューションアーキテクトとして仕事させて頂く中で、オンプレミスサーバを AWS の仕組みで運用・監視する場合の構成方法についてお客様からご相談頂くことがあり、オンプレミスと AWS は閉域網で接続したいというご要望を頂くことがあります。2022年7月時点でまとまった情報が公開されていないため、このブログでは閉域接続のオンプレミスサーバを AWS Systems Manager と Amazon CloudWatch で運用・監視するための構成方法ついて詳しくご紹介します。
アーキテクチャ概要
オンプレミスと AWS が閉域で接続されている前提で、以下の点を満たすようにネットワークを構成します(図 1 参照)。
- オンプレミスサーバ上の AWS Systems Manager Agent(SSM Agent)と Amazon CloudWatch Agent が通信するサービスエンドポイントへの経路を VPC endpoint で構成
- オンプレミスサーバ上の SSM Agent と CloudWatch Agent が VPC endpoint の DNS 名を解決できるように Amazon Route 53 Resolver を構成
このブログではオンプレミスと AWS を専用線で接続し、AWS Transit Gateway を経由させた構成ですが、仮想プライベートゲートウェイ経由など他の構成でも問題ありません。
図 1. ネットワークアーキテクチャ
SSM Agent および CloudWatch Agent の構成に必要な IAM ロールや IAM ユーザを作成した AWS アカウントでオンプレミスサーバを運用・監視することができます。例えば、図 2 上の構成で Account A で管理することも、図 2 下の構成で VPC endpoint をAccount A (Shared Account) で管理し、オンプレミスサーバー自体の管理は Account B にて実施することも可能です。
図 2. 管理アカウントの選択
なお、1 つのアカウントとリージョンごとに 1,000 台までは、無料でオンプレミスサーバを Systems Manager の管理対象とすることができますが、以下のいずれかのケースではアドバンストインスタンス層を有効にする必要があります。このインスタンス層にする場合、管理対象のインスタンスごとに料金がかかりますのでご注意ください(2022/7 時点)。
- SSM Session Manager で接続する
- Microsoft がリリースしたアプリケーションにパッチを適用する
- 管理対象が 1 つのアカウントとリージョンごとに 1,000 台を越える
構成手順
ネットワーク
オンプレミス環境と AWS の VPC は閉域網で通信出来る状態であることを前提とします。
まず、SSM Agentと CloudWatch Agent が利用する代表的なサービスエンドポイント用の VPC endpoint を作成します(図 3 参照)。作成手順についてはこちらをご参照ください。
- com.amazonaws.region-code.ssm
- com.amazonaws.region-code.ssmmessages
- com.amazonaws.region-code.ec2messages
- com.amazonaws.region-code.kms
- com.amazonaws.region-code.s3
- com.amazonaws.region-code.logs
- com.amazonaws.region-code.monitoring
図 3. 作成した VPC Endpoint
次にオンプレミスから VPC endpoint の DNS 名前解決用に Route 53 Resolver inbound endpoint を構成します(図 4 参照)。
図 4. 作成した Route 53 Resolver inbound endpoint
オンプレミスサーバが接続する DNS サーバから Route 53 Resolver inbound endpoint にフォワードするによう設定し、オンプレミスサーバから VPC endpoint の DNS 名が解決が出来ることを確認します。
実行例
このため、こちらの手順に従って private hosted zone を設定し、「*.s3.ap-northeast-1.amazonaws.com 」の問い合わせに VPC endpoint のプライベート IP を返すようにします(図 5 参照)。
図 5. private hosted zone の設定
SSM Agent
オンプレミスサーバにログインし、SSM Agent を VPC Endpoint 経由で Amazon S3 からダウンロードし、インストールします。その後停止します。OS の種別やバージョン毎の詳細はマニュアルをご参照ください。また、S3 の VPC endpoint は、「*」を「bucket」に置き換えてアクセスする必要があるため、ご注意ください。
ubuntu での実行例
オンプレミスのサーバを登録したいアカウントおよびリージョンで Systems Manager の Hybrid Activations の画面で Activation を作成します(図 6 参照)。
図6. Activation 作成の画面
Activation を作成すると画面上に Activation Code と Activation ID が表示されます(図 7 参照)。このタイミングでしか確認出来ないため、注意が必要です。
図 7. Activation 作成後に表示される Activation Code と Activation ID
オンプレミスサーバにログインし、Activation Code と Activation ID、登録するリージョンを指定して Systems Manager に登録した後、SSM Agent を起動します。
実行例
SSM Fleet Manager の画面を表示すると、オンプレミスサーバが Managed Node として登録されていることが確認出来ます(図 8 参照)。
図 8. Fleet Manager の画面
この時点では、Activation 作成時に自動生成した IAM ロールでは権限が足りず、Performance counters の表示などが出来ません(図 9 参照)。
図 9. SSM Fleet Manager の Performance counters
SSM RunCommand のログ出力と SSM Session Manager でのオンプレミスサーバへのアクセスのため、S3 や CloudWatch Logs および KMS Key へのアクセス権限を IAM ロールに追加します(図 10 参照)。このブログでは FullAccess のポリシーを設定していますが、本番運用では最小権限となるようご注意ください。
図 10. IAM ロールの設定
IAM ロールを設定すると SSM Fleet Manager の Performance counters の表示や SSM Session Manager によるオンプレミスサーバに接続ができます(図 11 参照)。
図 11. SSM Fleet Manager の Performance counters と SSM Session Manager によるオンプレミスサーバへの接続
これで SSM Agent の設定は完了ですが、追加機能への追随やセキュリティ観点で SSM Agent を定期的に更新することが大切です。定期的に自動更新する場合、SSM Fleet Manager の設定画面で SSM Agent の自動更新設定をします(図 12 参照)。これにより、2 週間ごとにに SSM Agent が更新されます。
図 12. SSM Fleet Manager の SSM Agent 自動更新設定
CloudWatch Agent
はじめにユーザーガイドに記載のとおり、SSM Run Command の AWS-ConfigureAWSPackage で AmazonCloudWatchAgent を実行し、オンプレミスサーバに CloudWatch Agent をインストールします(図 13 参照)。
図 13. SSM Run Command を利用した CloudWatch Agent のインストール
CloudWatch Agent のインストールが完了したら、オンプレミスサーバの CloudWatch Agent が利用する IAM ユーザを作成します(図 14 参照)。詳細な手順はこちらを参照ください。
図 14. CloudWatch Agent 用の IAM ユーザの作成
Amazon EC2 では IAM Role を利用しますが、オンプレミスサーバでは、AmazonCloudWatchAgent プロファイルを追記/作成する必要があります。詳細はこちらをご参照ください。ここで、IAM ユーザ作成時に表示される my_access_key と my_secret_key を設定し、メトリクスとログを収集するリージョンを指定します。
AmazonCloudWatchAgent プロファイルの設定例
次に、amazon-cloudwatch-agent-config-wizard を実行し、ウィザードの質問に答えて、CloudWatch Agent 設定ファイルを作成します。ここで設定したメトリクスとログの収集ができます。
CloudWatch Agent 設定ファイルをローカルで管理する例
設定ファイルが作成できたら、CloudWatch Agent を起動します。
実行例
本ブログでは /var/log/syslog を CloudWatch Logs に出力していますが、このログが CloudWatch Agent により CloudWatch Logs に送られ、図 15 のように確認出来ます。
図 15. CloudWatch Logs の画面
また、CloudWatch では以下のように、CPU や Memory、Disk 使用率などのメトリクスを確認できます(図 16 参照)。各メトリクスは CWAgent の名前空間にカテゴライズされます。
図 16. CloudWatch のメトリクス
これで CloudWatch Agent の設定は完了ですが、SSM Agent と同様に CloudWatch Agent の更新も大切です。
自動実行する場合、SSM State Manager を利用して、インストール時に利用した SSM Run Command の AWS-ConfigureAWSPackage を定期実行させます。
おわりに
いかがでしたしょうか。
エンタープライズシステムにおいてインターネットに接続出来ないサーバは少なからず存在します。このブログでは、AWS と閉域で繋がれたオンプレミスサーバを AWS の仕組みで運用・監視するため、オンプレミスサーバ上に Systems Manager Agent と CloudWatch Agent を構成する手順についてご紹介しました。これにより、AWS のマネジメントコンソールからオンプレミスサーバへ接続したり、メトリクスを監視したりできます。是非お試しください。
ソリューションアーキテクト 村田 京介