AWS

WindowsにCloudWatch Agentをインストールしてデータ収集

スポンサーリンク
WindowsにCloudWatch Agentをインストールしてデータ収集する AWS
スポンサーリンク
スポンサーリンク

WindowsインスタンスにCloudWatch Agentをインストールして、ログとメトリクスを収集する構成

CloudWatch Agentを使用することによって、ログやメトリクスを収集することができます。

オペレーティングシステム全体で Amazon EC2 インスタンスから内部システムレベルのメトリクスを収集します。(中略)

Linux または Windows Server を実行している Amazon EC2 インスタンスおよびオンプレミスサーバーから、ログを収集します。

CloudWatch エージェントを使用した Amazon EC2 Instances インスタンスとオンプレミスサーバーからのメトリクスとログの収集

今回はWindowsインスタンス(Windows Server 2019)を対象とします。

なおLinuxインスタンス(Amazon Linux 2)にCloudWatch Agentをインストールする手順については、以下のページをご確認ください。

構築する環境

Amazon.co.jp: AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版 : NRIネットコム株式会社, 佐々木 拓郎, 林 晋一郎, 金澤 圭: 本
Amazon.co.jp: AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版 : NRIネットコム株式会社, 佐々木 拓郎, 林 晋一郎, 金澤 圭: 本
Diagram of install CloudWatch Agent on Windows.

Linux版とは構成が異なります。
Linux版では、各種サービス(Sysmtem Manager, CloudWatch, S3)へのアクセスは、VPCエンドポイントを経由して行いましたが、今回はNATゲートウェイを使用します。

環境構築用のCloudFormationテンプレートファイル

上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置します。

awstut-fa/016 at main · awstut-an-r/awstut-fa
Contribute to awstut-an-r/awstut-fa development by creating an account on GitHub.

テンプレートファイルのポイント解説

構成はLinux版とWindows版で異なりますが、アプローチは同様です。
つまりLinuxでもWindowsでも、以下の2つのSSMドキュメントを使用することで、同様の手順でCloudWatch Agentをインストールすることができるということです。

  • AWS-ConfigureAWSPackage
  • AmazonCloudWatch-ManageAgent

このページでは、Linux版と異なる点にフォーカスして取り上げます。

NATゲートウェイで各種サービスにアクセス

Linux版と異なる点の1つ目は、各種サービスへアクセスする経路です。NATゲートウェイを使用します。

Resources: EIP: Type: AWS::EC2::EIP Properties: Domain: vpc NATGateway: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt EIP.AllocationId SubnetId: !Ref PublicSubnet
Code language: CSS (css)

Linux版ではVPCエンドポイントを使用していました。これはインスタンスがAmazon Linux 2だったため、S3バケットに対してyumを実行できたことが理由です。そのためCloudWatchエージェントインストールに、インターネットに抜ける必要がなかったのです。
詳細は以下のページをご確認ください。

対して今回のWindows版では、CloudWatchエージェントをインストールする際に、インターネットにアクセスする必要があります。そのためVPCエンドポイントだけでは、要件を満たすことができません。よってNATゲートウェイを設置して、プライベートサブネット内のWindowsインスタンスが、インターネットにアクセスできる経路を用意します。

CloudWatchエージェントのコンフィグ

SSMパラメータにCloudWatchエージェントのコンフィグを保存する手法は、Linux版と同様ですが、中身が少々異なります。

Resources: CloudWatchConfigParemeter: Type: AWS::SSM::Parameter Properties: Name: AmazonCloudWatch-windows Type: String Value: !Sub | { "logs": { "logs_collected": { "windows_events": { "collect_list": [ { "event_format": "xml", "event_levels": [ "VERBOSE", "INFORMATION", "WARNING", "ERROR", "CRITICAL" ], "event_name": "System", "log_group_name": "${Prefix}" } ] } } }, "metrics": { "append_dimensions": { "ImageId": "${!aws:ImageId}", "InstanceId": "${!aws:InstanceId}", "InstanceType": "${!aws:InstanceType}" }, "metrics_collected": { "Memory": { "measurement": [ "% Committed Bytes In Use" ], "metrics_collection_interval": 60 }, "Paging File": { "measurement": [ "% Usage" ], "metrics_collection_interval": 60, "resources": [ "*" ] } } } }
Code language: YAML (yaml)

コンフィグの内容がWindowsに沿ったものになります。Windows版でも、logsおよびmetricsセクションを定義し、インスタンスのログとメトリクスを取得するように設定します。具体的には、ログとしてイベントログの内、システムに関する内容を、メトリクスとしてメモリ・ページングに関する項目を収集するように設定します。

環境構築

CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。

CloudFormationスタックを作成し、スタック内のリソースを確認する

CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • Instance1のID:i-0d6ab5e24e2453ef4
  • S3バケット名:fa-016
  • CloudWatch Logsロググループ名:fa-016

SSM Run Commandの実行状況を確認する

AWS Management Consoleから実行状況を確認します。

Two SSM Run Commands are being executed.

確かに2つのコマンドが実行され、正常に完了していることがわかります。

続いてS3バケットにアクセスし、SSM Run Command実行時のログを確認します。
まずCloudWatch Agentのインストールの実行結果です。

Execution result of AWS-ConfigureAWSPackage.

ファイルの中身は以下の通りです。

Initiating arn:aws:ssm:::package/AmazonCloudWatchAgent 1.247349.0b251399 install Plugin aws:runPowerShellScript ResultStatus Success install output: Running install.ps1 Successfully installed arn:aws:ssm:::package/AmazonCloudWatchAgent 1.247349.0b251399
Code language: plaintext (plaintext)

正常にインストールされたことがわかります。

次にCloudWatch Agent起動の実行結果です。

Execution result of AmazonCloudWatch-ManageAgent.

ファイルの中身は以下の通りです。

****** processing amazon-cloudwatch-agent ****** Region: ap-northeast-1 credsConfig: map[] Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\ssm_AmazonCloudWatch-windows.tmp Start configuration validation... 2021/12/28 07:32:23 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\ssm_AmazonCloudWatch-windows.tmp ... Valid Json input schema. No csm configuration found. Configuration validation first phase succeeded Configuration validation second phase succeeded Configuration validation succeeded AmazonCloudWatchAgent has been stopped AmazonCloudWatchAgent has been started
Code language: plaintext (plaintext)

正常に起動されたことがわかります。

インスタンスにアクセスし、CloudWatch Agentの起動を確認する

一応、インスタンスにアクセスし、CloudWatch Agentの起動状況を確認します。
インスタンスへのアクセスは、SSM Session Managerを使用します。

$ aws ssm start-session \ --target i-0d6ab5e24e2453ef4 Starting session with SessionId: root-04cc7fc7ea067957c Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\Windows\system32>
Code language: Bash (bash)

SSM Session Managerを使用したインスタンスへのアクセスに関する詳細は、以下のページをご確認ください。

アクセスできましたので、起動状況を確認します。

PS C:\Windows\system32> Get-Service -Name AmazonCloudWatchAgent Status Name DisplayName ------ ---- ----------- Running AmazonCloudWatc... Amazon CloudWatch Agent
Code language: PowerShell (powershell)

「Status」の項目が「Running」とありますので、正常に動作していることがわかります。

CloudWatch Agentで配信されたログを確認する

まずロググループ内のストリームの状況を確認します。

A stream has been created in CloudWatch Logs by launching the CloudWatch Agent.

ロググループ名やストリーム名は、CloudWatch Agentのコンフィグで指定した通りです。

次にストリームに配信されているログを確認します。

Logs are being delivered through CloudWatch Agent.

正常にログが配信されていることがわかります。

CloudWatch Agentで配信されたメトリクスを確認する

最後にメトリクスを確認します。
AWS Management Consoleにて、以下にアクセスします。

CloudWatch > メトリクス > 全てのメトリクス > CWAgent

The graph was created by CloudWatch custom metrics.

上記の通り、メトリクスが配信され、グラフが作成されました。

まとめ

WindowsインスタンスにSSMを使用して、CloudWatch Agentをインストールする手順を確認しました

CloudWatch Agentを使用することで、ログおよびメトリクスの配信ができることを確認しました。

タイトルとURLをコピーしました