Amazon-CloudWatch

CloudWatch で AWS EC2 Windows イベントログを管理したい

はじめに

こんにちは、ディーネットの山中です。

今回は、前回投稿の
CloudWatch Logs で AWS EC2 インスタンスのログを管理したい の第2弾として
CloudWatch Logs で AWS EC2 Windows インスタンスのイベントログを管理する手順についてまとめてみました。
やっている事は前回と殆ど同じなので、前回の内容を行っている方は比較的容易に作業を行えるかと思います。

前提&事前準備

作業手順(簡易)

  1. IAM ロール作成、EC2 インスタンスにアタッチ
  2. Windows インスタンスにログイン
  3. CloudWatch Agent のインストール
  4. CloudWatch Agent の設定ファイル作成
  5. エージェント起動
  6. 動作確認

作業手順

IAM ロール作成、EC2 インスタンスにアタッチ

前回 同様、 【 CloudWatchAgentServerPolicy 】 ポリシーをアタッチした IAM ロールを EC2 Windows インスタンスにアタッチします。

Windows インスタンスにログイン

EC2 マネジメントコンソールにてパスワードを取得し、RDP ファイルをダウンロードして Windows インスタンスに接続していきます。

  1. インスタンスを選択 > [アクション] > [接続]

    Windowsインスタンス接続①
    Windowsインスタンス接続①

  2. [RDPクライアント] > [パスワードを取得]

    Windowsインスタンス接続②
    Windowsインスタンス接続②

  3. インスタンス作成時に指定したプライベートキーを使用して、パスワードを取得します。

    Windowsインスタンス接続③
    Windowsインスタンス接続③

  4. ユーザー名とパスワードを控えた後、リモートデスクトップファイルのダウンロードを行います。

    Windowsインスタンス接続④
    Windowsインスタンス接続④

  5. ダウンロードしたリモートデスクトップファイルを使用して、Windows インスタンスにログインを行います。

CloudWatch Agent のインストール

  1. Windows インスタンスにログイン後、
    左下の Windows アイコン > [設定] > [更新とセキュリティ] > [更新プログラムのチェック] と進み、 Windows Update を行います。Update後は再起動も行っておきます。

  2. インターネットエクスプローラーを起動して下記URLを入力し、エージェントをダウンロードします。

    https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi
エージェントダウンロード①
エージェントダウンロード①

警告に対しては、[追加] > [追加] > [閉じる] と進みます。

エージェントダウンロード②
エージェントダウンロード②
エージェントダウンロード③
エージェントダウンロード③

[保存] > [実行] と進み、ダウンロードしたエージェントのインストールを行います。

エージェントダウンロード④
エージェントダウンロード④
エージェントダウンロード⑤
エージェントダウンロード⑤
  1. インストールが完了したら、
    コントロールパネル > [プログラム] > [プログラムと機能] と進み、
    インストールされているプログラムの中に「Amazon CloudWatch Agent」がある事を確認します。
エージェントダウンロード⑥
エージェントダウンロード⑥
  1. インストール後は不要なファイルを削除しておきます。
エージェントダウンロード⑦
エージェントダウンロード⑦

以上でエージェントのインストールが完了しました。

CloudWatch Agent の設定ファイル作成

今回もウィザードを使用して Windows Server のシステムログを監視する設定を入れていきます。

ウィザード起動
ウィザード起動

コマンドプロンプトを管理者権限で実行し、ウィザードがあるディレクトリに移動します。

cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"

ウィザードを起動します。

amazon-cloudwatch-agent-config-wizard.exe

対話形式で設定ファイルを作成していきます。
要件によって設定していってもらえればと思います。

================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
=                                                              =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply.                                           =
================================================================

CloudWatch エージェントを使用する OS を選択します。今回は Windows なので 2 を

On which OS are you planning to use the agent?
1. linux
2. windows
3. darwin
default choice: [2]:
2

EC2 なので 1 を選択しました。

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]:
1

Statsデーモン(メトリクス収集ツール)を使用するか聞かれています。
カスタムメトリクスも収集したいので 1 を選択しました。

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

Statsデーモンの待ち受けポート番号についてです。
問題ないのでデフォルトでいきます。

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

Statsデーモンの収集間隔についてです。
デフォルト通り 1 を選択しました。

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

StatsDデーモンが収集したメトリクスを集約する周期についてです。
デフォルト通り 4 を選択しました。

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

移行のためにインポートする既存の CloudWatch Log Agent 設定ファイルについてです。
新規で作成しているので 2 を選択しました。

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

CPUやメモリの収集を行うかについてです。
収集してほしいので 1 を選択しました。

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

コアごとのCPUメトリクスを監視するかについてです。
これについては追加料金がかかる場合もあるみたいなので 2 を選択しました。

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

収集するメトリクスに EC2 の各情報( ImageId, InstanceId, InstanceType, AutoScalingGroupName ) を追加するかについて聞かれています。
デフォルト通り追加していきます。

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]:
1

ec2のInstanceIdを集約するかについて聞かれています。
デフォルト通り 1 を選択しました。

Do you want to aggregate ec2 dimensions (InstanceId)?
1. yes
2. no
default choice: [1]:
1

高解像度でメトリクスを収集するかについてです。
デフォルト通り 4 を選択しました。

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]:
4

どのレベルでメトリクスを収集するかについて聞かれています。
詳細についてはこちらを
デフォルト通り 1 を選択しました。

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

上記の内容で設定ファイルが作成されました。

Current config as follows:
{
        "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": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "Memory": {
                                "measurement": [
                                        "% Committed Bytes In Use"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "statsd": {
                                "metrics_aggregation_interval": 60,
                                "metrics_collection_interval": 10,
                                "service_address": ":8125"
                        }
                }
        }
}

上記の内容で問題なければ 1 を選択します。

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]:
1

カスタマイズされたログファイルが既に存在しているか、インポートを行うか聞かれています。
新規で作成しており存在していないので 1 を選択します。

Do you want to monitor any customized log files?
1. yes
2. no
default choice: [1]:
2

Windows イベントログを監視するかについてです。
デフォルト通り 1 を選択しました。

Do you want to monitor any Windows event log?
1. yes
2. no
default choice: [1]:
1

収集対象の Windows イベントログを指定します。
System のログを取得したいのでデフォルト通りにいきます。

Windows event log name:
default choice: [System]
System

詳細レベルのモニターを行うかについてです。
デフォルト通り 1 を選択しました。

Do you want to monitor VERBOSE level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1

CloudWatch Logs で INFORMATION level を取得するかについてです。
今回は 2 を選択しました。

Do you want to monitor INFORMATION level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
2

WARNING level を取得するかについてです。
今回は 2 を選択しました。

Do you want to monitor WARNING level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
2

ERROR level を取得するかについてです。
デフォルト通り 1 を選択しました。

Do you want to monitor ERROR level events for Windows event log System ?
1. yes
2. no
default choice: [1]:
1

CRITICAL level を取得するかについてです。
デフォルト通り 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]
System_log_group_name

ログストリーム名を決めます。
ここで設定したログストリーム名は後にマネジメントコンソールにて確認できます。

Log stream name:
default choice: [{instance_id}]
{instance_id}

CloudWatch Logs への保存形式について聞かれています。
デフォルト通り 1 を選択しました。

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]:
1

ログの保持期間です。
デフォルト通り 1 を選択しました。

Log Group Retention in days
1. -1
2. 1
3. 3
4. 5
5. 7
6. 14
7. 30
8. 60
9. 90
10. 120
11. 150
12. 180
13. 365
14. 400
15. 545
16. 731
17. 1827
18. 2192
19. 2557
20. 2922
21. 3288
22. 3653
default choice: [1]:
1

追加で監視したい Windows イベントログがあるか聞かれています。
今回はないので 2 を選択しました。

Do you want to specify any additional Windows event log to monitor?
1. yes
2. no
default choice: [1]:
2

config.json が作成されました。

Saved config file to config.json successfully.
Current config as follows:
{
        "logs": {
                "logs_collected": {
                        "windows_events": {
                                "collect_list": [
                                        {
                                                "event_format": "xml",
                                                "event_levels": [
                                                        "VERBOSE",
                                                        "ERROR",
                                                        "CRITICAL"
                                                ],
                                                "event_name": "System",
                                                "log_group_name": "System_log_group_name",
                                                "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": 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.

SSM のパラメータストアに保存するかについてです。
SSM は利用していないので 2 を選択しました。

Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2

Enterを押します。

Please press Enter to exit...

Program exits now.

お疲れ様でした、以上で設定ファイルの作成が完了しました。

config.json は以下に格納されているかと思いますので、メモ帳で開いて確認してみてもいいかもです。

C:\Program Files\Amazon\AmazonCloudWatchAgent

エージェント起動

Powershellでエージェントを起動させます。

  1. PowerShellを管理者権限で起動します。

    PowerShell起動
    PowerShell起動

  2. ディレクトリを移動し、エージェントを起動させます。

Agent起動、config.json読み込み
Agent起動、config.json読み込み
> cd 'C:\Program Files\Amazon\AmazonCloudWatchAgent\'
> ./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s

動作確認

CloudWatch のマネジメントコンソールにて
ロググループ、ログストリーム、ログイベントを確認していきます。

  1. CloudWatch のマネジメントコンソールに移動します。

  2. ロググループ、ログストリーム、ログイベントが作成されている事を確認していきます。

ロググループ
ロググループ
ログストリーム
ログストリーム
ログイベント
ログイベント

お疲れ様でした。
以上で CloudWatch Logs で AWS EC2 Windows インスタンスのイベントログを管理する手順が完了しました。

カスタムメトリクスの追加やアラーム作成なども行う予定でしたが、
長くなってしまったのでまた別記事で書きたいと思います。

この記事がエンジニア初学者の参考になれば幸いです。
最後まで読んでいただきありがとうございました。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA