概要
- こんにちわ、今回は担当案件でオンプレミスとAWS 環境を接続する構成がありまして、オンプレミスのサーバーからAWS のリソースへアクセスを行います。事前に検証した知見を記事にまとめますね。
- 今回の記事では、オンプレミスのWindowsサーバーのメトリクスをAWS環境のCloudWatch に出力する方法を記載します。なお、クレデンシャルはアクセスキーを使用せず、 AWS Systems Manager のハイブリッドアクティベーションで管理しています。
前提条件
- AWS Systems Manager のハイブリッドアクティベーションを作成し、ハイブリッドアクティベーションに設定されているIAMロールにCloudWatch にメトリクス出力が可能な権限を設定します。
- 詳細は、以下の記事を参照ください。
オンプレミスを AWS Systems Manager で管理する
ハイブリッドアクティベーションのクレデンシャル
- ハイブリッドアクティベーションは、IAM ユーザーのアクセスキーではなく、IAM STS の一時的な認証情報を使用するため、安全にAWS 環境の認証を提供します。
- ハイブリッドアクティベーションで管理されるマネージドノードは、Windows の場合、“C:\Windows\System32\config\systemprofile\.aws” に認証情報が格納されます。この認証情報は、SSM Agent によって、30分間隔で更新されます。
オンプレ Windows のCloudWatch Agent設定方法
- Windows にリモートデスクトップ接続して作業を行います。
- 先ず、CloudWatch エージェントパッケージをダウンロードします。今回、以下からダウンロードを行いました。こちらのドキュメントにダウンロードリンクが記載されています。
- 次に、amazon-cloudwatch-agent をインストールします。コマンドプロンプトを使用する場合は、以下のコマンドを実行します。
- msiexec /i amazon-cloudwatch-agent.msi
- Systems ManagerのRun Command を使用してインストールする場合、コマンドドキュメントに「AWS-ConfigureAWSPackage」を使用し、Actionに「Install」、Nameに「AmazonCloudWatchAgent」を指定します。
- 次に、“C:\ProgramData\Amazon\AmazonCloudWatchAgent” のcmmon-config を編集します。
# This common-config is used to configure items used for both ssm and cloudwatch access ## Configuration for shared credential. ## Default credential strategy will be used if it is absent here: ## Instance role is used for EC2 case by default. ## AmazonCloudWatchAgent profile is used for onPremise case by default. # [credentials] # shared_credential_profile = "{profile_name}" # shared_credential_file = "{file_name}" [credentials] shared_credential_profile = "default" shared_credential_file = "C:\\Windows\\System32\\config\\systemprofile\\.aws\\credentials" ## Configuration for proxy. ## System-wide environment-variable will be read if it is absent here. ## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy ## Note: system-wide environment-variable is not accessible when using ssm run-command. ## Absent in both here and environment-variable means no proxy will be used. # [proxy] # http_proxy = "{http_url}" # https_proxy = "{https_url}" # no_proxy = "{domain}" # [ssl] # ca_bundle_path = "{ca_bundle_file_path}" # # [imds] # imds_retries = 1
- 次に、“C:\Windows\System32\config\systemprofile\.aws” にconfig を作成し、region を指定します。
[default] region = "ap-northeast-1"
- ここで編集したファイルは、以下の2つです。
- 次に、CloudWatch Agent の設定を “C:\Program Files\Amazon\AmazonCloudWatchAgent” にconfig.json を配置します。検証に使用したjsonは、以下参照ください。
{ "metrics": { "metrics_collected": { "LogicalDisk": { "measurement": [ "% Free Space" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "Memory": { "measurement": [ "% Committed Bytes In Use" ], "metrics_collection_interval": 60 }, "Network Interface": { "measurement": [ "Bytes Sent/sec", "Bytes Received/sec", "Packets Sent/sec", "Packets Received/sec" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "Paging File": { "measurement": [ "% Usage" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "PhysicalDisk": { "measurement": [ "Disk Write Bytes/sec", "Disk Read Bytes/sec", "Disk Writes/sec", "Disk Reads/sec" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "Processor": { "measurement": [ "% Processor Time" ], "metrics_collection_interval": 60, "resources": [ "*" ] } } } }
- 最後に、Power Shellを管理者として起動し、amazon-cloudwatch-agent-ctl コマンドを使用して、サービス起動を行います。
PS C:\> cd "C:\Program Files\Amazon\AmazonCloudWatchAgent" PS C:\Program Files\Amazon\AmazonCloudWatchAgent\> ./amazon-cloudwatch-agent-ctl.ps1 -a append-config -m onPremise -c file:config.json ****** processing amazon-cloudwatch-agent ****** Got Home directory: C:\Users\Administrator I! Set home dir windows: C:\Users\Administrator I! SDKRegionWithCredsMap region: ap-northeast-1 Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp Start configuration validation... 2024/08/25 13:52:46 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json ... C:\ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json does not exist or cannot read. Skipping it. 2024/08/25 13:52:46 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp ... 2024/08/25 13:52:46 I! Valid Json input schema. Got Home directory: C:\Users\Administrator I! Set home dir windows: C:\Users\Administrator I! SDKRegionWithCredsMap region: ap-northeast-1 2024/08/25 13:52:47 Configuration validation first phase succeeded Configuration validation second phase succeeded Configuration validation succeeded PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a status { "status": "stopped", "starttime": "", "configstatus": "configured", "version": "1.300043.0b781" } PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a start ****** Processing amazon-cloudwatch-agent ****** AmazonCloudWatchAgent has been started PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a status { "status": "running", "starttime": "2024-08-25T13:54:52", "configstatus": "configured", "version": "1.300043.0b781" } PS C:\Program Files\Amazon\AmazonCloudWatchAgent>
CloudWatch メトリクス確認
- CloudWatch メトリクスを確認します。
- メトリクスが出力される名前空間は、「CWAgent」になります。
- オンプレミスのWindows からメトリクス出力が確認できました。
参考資料
- 前提となるハイブリッドアクティベーションの設定は、以下の記事を参照ください。
- Windows の一般的なCloudWatch Agent の設定は、以下の記事を参照ください。