概要

  • こんにちわ、今回は担当案件でオンプレミスと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設定方法

 

  • 次に、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 からメトリクス出力が確認できました。

 

参考資料