概要
- こんにちわ、今回は担当案件でオンプレミスと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 の設定は、以下の記事を参照ください。