SSM Run CommandでWindows Server 2025にCloudWatch Agentをインストール&起動

Windows Server 2025にCloudWatchエージェントをインストールする機会があり、Windows Serverを立てたあとに「RDPで入ってポチポチして起動する」のをやめたいなぁとふと思いました。

 

監視エージェントの導入は毎回やることが同じなので、手元の踏み台から入るのも、パスワードを払い出すのも、できれば省略したいところです。

 

この記事では、"Windows Server 2025"のEC2インスタンスに対して、一度もRDPでログインせずに CloudWatchエージェントをインストールして起動する流れをまとめました。

 

AWS Systems ManagerのRun Commandを使って、実現してみます。

 

 

WS2025にCWAをインストールしてみた

■1. 前提条件

今回紹介する手順では、EC2に一度もRDP接続せずにCloudWatch エージェントのインストールと起動を行います。以下の条件を満たしていることを前提とします。

 

  1. Windows Server 2025のEC2インスタンスが起動済みであること
     ⇒本記事は起動済みのインスタンスに対して実行する手順です。

  2. SSM Agentがインスタンスにインストール済み・起動済みであること
     ⇒公式のWindows Server AMIであれば通常はプリインストールされていますが、無効化している場合は有効化してください。

  3. インスタンスに適切なIAMロールがアタッチされていること
     ⇒少なくとも次のポリシーが含まれていることを想定しています。

    • AmazonSSMManagedInstanceCore
      (Run Commandでコマンドを実行するため)
    • CloudWatchAgentServerPolicy
      (CloudWatch Logs / Metrics への送信、Parameter Storeからの設定ファイル取得のため)
  4. SSMエンドポイントに到達できるネットワークになっていること
     ⇒インターネット経由またはVPCエンドポイント経由で、Systems Managerと通信できる必要があります。プライベートサブネットのみの場合はSSM関連のVPCエンドポイントを用意してください。

  5. Systems Manager Parameter Storeが利用できること
     ⇒設定ファイルをParameter Storeに保存してからRun Commandで参照するため、Parameter Storeを使える権限が必要です。

  6. CloudWatch側でロググループ/メトリクスを受け取れる状態であること
     ⇒今回の設定例では存在しないロググループ名を指定しても自動作成されます

 

 

■2. CloudWatchエージェントインストール

まずは、Run Commandを利用してCloudWatchエージェントのインストールを実施していきます。

 

↓マネジメントコンソールから[ Systems Manager ]のダッシュボードに遷移します。

 

 

↓左のナビゲーションペインから、[ Run Command ]を選択し、[Run command (コマンドの実行)] をクリックします。

 

 

↓[ コマンドドキュメント ]のフォームに[AWS-ConfigureAWSPackage]を入力し、選択します。
AWS-ConfigureAWSPackage

 

 

↓[ コマンドのパラメータ ]では以下の設定値を入力してください。

 

項目 内容
コマンドドキュメント AWS-ConfigureAWSPackage
ドキュメントのバージョン 1 (デフォルト)
Action Install
Installation Type Uninstall and reinstall
Name AmazonCloudWatchAgent
Version latest
Additional Arguments {}

 

 

↓[ ターゲット ]では今回作成したEC2インスタンスのみ指定したいため、[ インスタンスを手動で選択する ]を選択し、任意のEC2インスタンスを選択してください。

 

 

↓その他はデフォルトのまま、ページ最下部の[ 実行 ]をクリックします。

 

 

↓設定や権限に問題がなければ、「コマンド ID: 7cca9fce-b662-476b-ab5a-3c43988bd321 が正常に送信されました!」とメッセージがポップします。

 

 

↓一分経過したあと、更新マークをクリックすると、ステータスが[ 成功 ]に変わりました。

 

 

↓インベントリを見ると、[ Amazon CloudWatch Agent ]が新たに追加されています。

 
【インストール前】


【インストール後】

 

 

■3. CloudWatchエージェント起動

●3-1. 設定ファイル配置

CloudWatchエージェントをサーバーで実行する前に、CloudWatchエージェント設定ファイルを1つ以上作成する必要があります。

 

設定ファイルの作成は起動時にウィザード形式で設定ファイルを作成する方法と、自身で設定ファイルを手動で用意する方法があります。

 

今回は"AWS re\:Post"で公開されていました設定ファイルを、利用します。

 
【設定ファイル】

{
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "C:\\Users\\Administrator\\Desktop\\CWMetricsLogs\\*",
            "log_group_name": "CWMetricsLogs",
            "log_stream_name": "{instance_id}",
            "retention_in_days": -1
          }
        ]
      },
      "windows_events": {
        "collect_list": [
          {
            "event_format": "xml",
            "event_levels": [
              "VERBOSE",
              "INFORMATION",
              "WARNING",
              "ERROR",
              "CRITICAL"
            ],
            "event_name": "CloudWatchAgent",
            "log_group_name": "CloudWatchAgent",
            "log_stream_name": "{instance_id}",
            "retention_in_days": -1
          }
        ]
      }
    }
  },
  "metrics": {
    "aggregation_dimensions": [
      ["InstanceId"]
    ],
    "append_dimensions": {
      "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
      "ImageId": "${aws:ImageId}",
      "InstanceId": "${aws:InstanceId}",
      "InstanceType": "${aws:InstanceType}"
    },
    "metrics_collected": {
      "LogicalDisk": {
        "measurement": ["% Free Space"],
        "metrics_collection_interval": 30,
        "resources": ["*"]
      },
      "Memory": {
        "measurement": ["% Committed Bytes In Use"],
        "metrics_collection_interval": 30
      },
      "Paging File": {
        "measurement": ["% Usage"],
        "metrics_collection_interval": 30,
        "resources": ["*"]
      },
      "PhysicalDisk": {
        "measurement": [
          "% Disk Time",
          "Disk Write Bytes/sec",
          "Disk Read Bytes/sec",
          "Disk Writes/sec",
          "Disk Reads/sec"
        ],
        "metrics_collection_interval": 30,
        "resources": ["*"]
      },
      "Processor": {
        "measurement": [
          "% User Time",
          "% Idle Time",
          "% Interrupt Time"
        ],
        "metrics_collection_interval": 30,
        "resources": ["*"]
      },
      "TCPv4": {
        "measurement": ["Connections Established"],
        "metrics_collection_interval": 30
      },
      "TCPv6": {
        "measurement": ["Connections Established"],
        "metrics_collection_interval": 30
      },
      "statsd": {
        "metrics_aggregation_interval": 60,
        "metrics_collection_interval": 30,
        "service_address": ":8125"
      }
    }
  }
}

 

サーバー内でCloudWatchエージェントを起動した際に、用意した設定ファイルをコピーし配置できるように、"AWS Systems Manager Parameter Store"を利用します。

 

↓マネジメントコンソールから[ Systems Manager ]のダッシュボードに遷移します。

 

 

↓左のナビゲーションペインから、[ パラメータストア ]を選択し、[ パラメータの作成 ]をクリックします。

 


 

↓以下の設定値を入力します。
名前に関しては、"AmazonCloudWatch-"から始まる名前のみ取得可能です。

 

項目 内容
名前 AmazonCloudWatch-{インスタンス名}
説明 {任意}
利用枠 標準
タイプ 文字列
データ型 データ型
{上記の設定ファイル}

 

↓入力が完了しましたら、[ パラメータを作成 ]をクリックします。

 

 

↓[ パラメータの作成リクエストが成功しました。 ]とポップされれば完了です。

 

 

 

●3-2. CloudWatchエージェント起動

それではCloudWatchエージェントを起動します。

 

 

↓マネジメントコンソールから[ Systems Manager ]のダッシュボードに遷移します。

 

 

↓左のナビゲーションペインから、[ Run Command ]を選択し、[Run command (コマンドの実行)] をクリックします。

 

 

↓[ コマンドドキュメント ]のフォームに[AmazonCloudWatch-ManageAgent]を入力し、選択します。
AmazonCloudWatch-ManageAgent

 

 

↓続いて、[ コマンドのパラメータ ]で以下の設定値を入力します。

 

項目 内容
Action configure
Mode ec2
Optional Configuration Source ssm
Optional Configuration Location AmazonCloudWatch-saito-cwatest-ec2
Optional Restart yes

※[ Optional Configuration Location ]については、パラメータストアで作成した自身のリソース名に置き換えてください。
※[ Optional Restart ]で"yes"としましたが、もし起動を分けたい方は"no"とし、再度[ Action ]欄に"Start"を入力したRun Commandの実行をお願いします。

 

 

↓[ ターゲット ]では今回作成したEC2インスタンスのみ指定したいため、[ インスタンスを手動で選択する ]を選択し、任意のEC2インスタンスを選択してください。

 

 

↓その他はデフォルトのまま、ページ最下部の[ 実行 ]をクリックします。

 

 

↓一分経過したあと、更新マークをクリックすると、ステータスが[ 成功 ]に変わりました。

 

 

CloudWatchエージェントの設定反映と起動実行作業は完了です。

 

 

●3-3. 起動確認

念のため、起動しているか確認します。

 

↓[ Run Command ]を選択し、[ コマンドの実行 ] をクリックします。

 

 

↓[ コマンドドキュメント ]のフォームに[ AWS-RunPowerShellScript ]を入力し、選択します。
AWS-RunPowerShellScript
 

 

↓[ コマンドのパラメータ ]に以下を入力します。
Get-Service AmazonCloudWatchAgent | Format-Table Status,Name,DisplayName

 

 

↓ターゲットを選択し、[ 実行 ]をクリックします。

 

 

↓ステータスが[ 成功 ]を確認し、[ 出力の表示 ]をクリックします。
[ Output ]に以下の内容が出力されていればOKです。問題なく起動したようです。

 


 Status Name                  DisplayName            
 ------ ----                  -----------            
Running AmazonCloudWatchAgent Amazon CloudWatch Agent

 

 

CloudWatchエージェントの起動は完了です。

 

 

■4. 動作確認

さいごにCloudWacthエージェントから設定したメトリクスの値が送られてきてるか確認してみましょう。

 

CloudWatchのダッシュボードからCloudWatchメトリクスを見てみると、カスタム名前空間が存在し、設定前のメトリクス数"25"から"61"に増えていることが確認できます。

 

 
【CloudWatchエージェント起動前】


【CloudWatchエージェント起動後】

 

今回のインストール・起動は以上です。

 

 

まとめ

わたしが以前WindowsServerにCloudWatchエージェントをインストールしたときは、RDP接続をし、PowerShellからコマンドを叩いてインストールと起動をした記憶があります。

 

今回の方法は、サーバーに接続することなく、マネジメントコンソールのみで完結する方法で、初心者の方にも簡単に実施できる方法かと思います。サーバーのモニタリングは重要な運用タスクなので、ぜひCloudWatchエージェントのインストールを実施してみましょう。

 

次回は2025年10月に発表された、「CloudWatch Agent で Windows Event Log フィルターをサポート」を試してみます。

 

 

参考リンク:AWS Systems Manager を使用して CloudWatch エージェントをインストールするCloudWatch エージェントの起動

 

 

↓ほかの協栄情報メンバーのAWS Systems Managerについての記事を公開しています。ぜひ参考にしてみてください。
 

 
AWS Systems Manager(SSM)を利用して、運用管理を楽にする インベントリ編(齊藤弘樹)

 
AWS System ManagerのリモートデスクトップでPowerShellのキーボード入力が反映されない(ishihara.m)

 

 

Last modified: 2025-11-08

Author