📘

【AWS】CloudWatchエージェントインストール〜CloudWatch Logsにログ出力迄(WindowsServer2019)

2021/08/31に公開

はじめに

WindowsServer2019にCloudWatchエージェントをインストールするところから、CloudWatchLogsにログを出力する迄の流れをアウトプットしたいと思います。

前提条件

  • 作業用IAMユーザーにて作業実施
  • WindowsServer2019の初期構築が完了している状態(日本語化/ホスト名変更)
  • CloudWatchLogsにログを出力する部分のみ考慮

EC2(WindowsServer2019)のスペック

項目 設定
VM名 testwin
インスタンスタイプ t2.medium
OS Microsoft Windows Server 2019 Base
vCPU 2
メモリ(GiB) 4
ルートデバイス名 /dev/sda1:30GiB(C)

※無料使用枠ではないため要注意

今回取得したいログ

システムログの内容を取得します。

作業の流れ

①IAMロール作成/EC2にIAMロール付与
②EC2にCloudWatchエージェントをインストール&設定
③CloudWatchLogsにてログ出力確認

作業手順

①IAMロール作成/EC2にIAMロール付与

1.IAMダッシュボードより「ロール」をクリック。

2.ロール一覧より「ロールを作成」をクリック。

3.ロール作成画面にて「AWSサービス」を選択し、「EC2」を選択する。選択後、「次のステップ:アクセス権限」をクリックする。

4.以下ポリシーを選択する。

  • CloudWatchAgentAdminPolicy
  • CloudWatchAgentServerPolicy

選択後、「次のステップ:タグ」をクリックする。
※大きい権限を付与しているため、業務で使用する場合は権限をご確認下さい。

5.タグは未設定のまま、「次のステップ:確認」をクリックする。

6.任意のロール名を設定し、設定に問題なければ「ロールの作成」をクリックする。

7.ロール一覧より、作成したロールが存在することを確認する。

8.EC2ダッシュボードのEC2一覧画面に移動し、対象のインスタンスにチェックを入れた後に、「アクション」→「セキュリティ」→「IAMロールを変更」と選択する。

9.IAMロールの変更画面にて、作成したロールを選択し「保存」をクリックする。

10.インスタンス下部のサマリ画面のセキュリティを確認し、対象のIAMロールが付与されていることを確認。

②EC2にCloudWatchエージェントをインストール&設定

1.対象のWindowsServerへRDP実施後、以下リンクよりamazon-cloudwatch-agent.msiをダウンロードする。

https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi

2.ダウンロードしたamazon-cloudwatch-agent.msiを管理者権限で実行する。

実施した場合、インストール処理が走る。

3.以下ディレクトリにファイルが存在していることを確認。

C:\Program Files\Amazon\AmazonCloudWatchAgent

4.PowerShellを管理者権限で起動する。

5.以下コマンドを実行し、CloudWatchエージェントのセットアップを実施する。

コマンド
・ディレクトリ移動
cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"

・セットアップウィザード起動
.\amazon-cloudwatch-agent-config-wizard
  • セットアップウィザード

値を変更した部分のみ★マークにて表示させています。
※基本はデフォルト設定のまま進めます。

セットアップウィザード画面
PS C:\Users\Administrator> cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> .\amazon-cloudwatch-agent-config-wizard
=============================================================
= Welcome to the AWS CloudWatch Agent Configuration Manager =
=============================================================
On which OS are you planning to use the agent?
1. linux
2. windows
3. darwin
default choice: [2]:

Trying to fetch the default region based on ec2 metadata...
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:

Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:

Which port do you want StatsD daemon to listen to?
default choice: [8125]

What is the collect interval for StatsD daemon?
1. 10s
2. 30s
3. 60s
default choice: [1]:

What is the aggregation interval for metrics collected by StatsD daemon?
1. Do not aggregate
2. 10s
3. 30s
4. 60s
default choice: [4]:

Do you have any existing CloudWatch Log Agent configuration file to import for migration?
1. yes
2. no
default choice: [2]:

Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:

Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.
1. yes
2. no
default choice: [1]:

Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:

Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:

Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:

Current config as follows:
{
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "LogicalDisk": {
                                "measurement": [
                                        "% Free Space"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "Memory": {
                                "measurement": [
                                        "% Committed Bytes In Use"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "statsd": {
                                "metrics_aggregation_interval": 60,
                                "metrics_collection_interval": 10,
                                "service_address": ":8125"
                        }
                }
        }
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:

Do you want to monitor any customized log files? ←★
1. yes
2. no
default choice: [1]:
2  ←★
Do you want to monitor any Windows event log?  ←★
1. yes
2. no
default choice: [1]:
1  ←★
Windows event log name:
default choice: [System]

Do you want to monitor VERBOSE level events for Windows event log System ? ←★
1. yes 
2. no
default choice: [1]:
1 ←★
Do you want to monitor INFORMATION level events for Windows event log System ? ←★
1. yes
2. no
default choice: [1]:
1 ←★
Do you want to monitor WARNING level events for Windows event log System ? ←★
1. yes
2. no
default choice: [1]:
1 ←★
Do you want to monitor ERROR level events for Windows event log System ? ←★
1. yes
2. no
default choice: [1]:
1 ←★
Do you want to monitor CRITICAL level events for Windows event log System ? ←★
1. yes
2. no
default choice: [1]:
1 ←★
Log group name:
default choice: [System]
testwin_LogGroup ←★
Log stream name:
default choice: [{instance_id}]
Systemlog ←★
In which format do you want to store windows event to CloudWatch Logs?
1. XML: XML format in Windows Event Viewer
2. Plain Text: Legacy CloudWatch Windows Agent (SSM Plugin) Format
default choice: [1]:
2 ←★
Do you want to specify any additional Windows event log to monitor?
1. yes
2. no
default choice: [1]:
2 ←★
Saved config file to config.json successfully.
Current config as follows:
{
        "logs": {
                "logs_collected": {
                        "windows_events": {
                                "collect_list": [
                                        {
                                                "event_format": "text",
                                                "event_levels": [
                                                        "VERBOSE",
                                                        "INFORMATION",
                                                        "WARNING",
                                                        "ERROR",
                                                        "CRITICAL"
                                                ],
                                                "event_name": "System",
                                                "log_group_name": "testwin_LogGroup",
                                                "log_stream_name": "Systemlog"
                                        }
                                ]
                        }
                }
        },
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "LogicalDisk": {
                                "measurement": [
                                        "% Free Space"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "Memory": {
                                "measurement": [
                                        "% Committed Bytes In Use"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "statsd": {
                                "metrics_aggregation_interval": 60,
                                "metrics_collection_interval": 10,
                                "service_address": ":8125"
                        }
                }
        }
}
Please check the above content of the config.
The config file is also located at config.json.
Edit it manually if needed.
Do you want to store the config in the SSM parameter store? ←★
1. yes
2. no
default choice: [1]:
2 ←★(SSMは使用しない)
Please press Enter to exit...

Program exits now.
PS C:\Program Files\Amazon\AmazonCloudWatchAgent>

※セットアップにて以下を設定しています。

項目 設定
取得するログファイル System
ロググループ名 testwin_LogGroup
ログストリーム名 Systemlog
ログフォーマット text
取得するログのレベル VERBOSE:詳細
INFORMATION:情報
WARNING:警告
ERROR:エラー
CRITICAL:重大

6.config.jsonが作成されていることを確認。

7.PowerShellにてconfig.jsonの読み込みを実施する。

コマンド
./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s
実行例
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s
****** processing amazon-cloudwatch-agent ******
Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp
Start configuration validation...
2021/08/31 10:41:38 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.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
PS C:\Program Files\Amazon\AmazonCloudWatchAgent>

③CloudWatchLogsにてログ出力確認

1.AWSマネジメントコンソールへ移動し、CloudWatchのダッシュボードにてロググループを開く。

以下のように対象のロググループが作成されていることを確認。

2.ロググループの詳細画面にて、対象のログストリームを開く。

3.ログイベントが出力されていることを確認。

さいごに

以下の記事にログ監視についてまとめているので、併せて実施してみては如何でしょうか?

【AWS】CloudWatch Logsからシステムログをメール通知する。

参考記事

WindowsServerにCloudWatch エージェントを入れてリソース監視
使用しているサーバーへの CloudWatch エージェントのインストールと実行

Discussion