目次
はじめに
こんにちは、ディーネットの山中です。
今回は、前回投稿の
CloudWatch Logs で AWS EC2 インスタンスのログを管理したい の第2弾として
CloudWatch Logs で AWS EC2 Windows インスタンスのイベントログを管理する手順についてまとめてみました。
やっている事は前回と殆ど同じなので、前回の内容を行っている方は比較的容易に作業を行えるかと思います。
前提&事前準備
-
EC2 Windows インスタンス構築済み
Windows インスタンス作成についてはこのあたりが参考になるかと思います。
AWS EC2 の Windows かんたん構築手順
AWS EC2 Windows Server 2019 インスタンス作成手順 (2021年版)
AWS EC2 で Windows インスタンスを操作する手順を解説! -
セキュリティグループ
ポートは一旦 any( 0.0.0.0/0 ) で許可しておきます。
・3389 ( EC2 インスタンスに RDP 接続する際に使用 )
・443 ( CloudWatch エージェントがログを送信する際に使用 ) -
OS
Windows server 2019 -
使用した AMI( 同じ AMI でなくても大丈夫です )
Windows_Server-2019-Japanese-Full-Base-2023.01.11(ami-0f9594c56f4ee4354)
作業手順(簡易)
- IAM ロール作成、EC2 インスタンスにアタッチ
- Windows インスタンスにログイン
- CloudWatch Agent のインストール
- CloudWatch Agent の設定ファイル作成
- エージェント起動
- 動作確認
作業手順
IAM ロール作成、EC2 インスタンスにアタッチ
前回 同様、 【 CloudWatchAgentServerPolicy 】 ポリシーをアタッチした IAM ロールを EC2 Windows インスタンスにアタッチします。
Windows インスタンスにログイン
EC2 マネジメントコンソールにてパスワードを取得し、RDP ファイルをダウンロードして Windows インスタンスに接続していきます。
-
インスタンスを選択 > [アクション] > [接続]
-
[RDPクライアント] > [パスワードを取得]
-
インスタンス作成時に指定したプライベートキーを使用して、パスワードを取得します。
-
ユーザー名とパスワードを控えた後、リモートデスクトップファイルのダウンロードを行います。
-
ダウンロードしたリモートデスクトップファイルを使用して、Windows インスタンスにログインを行います。
CloudWatch Agent のインストール
-
Windows インスタンスにログイン後、
左下の Windows アイコン > [設定] > [更新とセキュリティ] > [更新プログラムのチェック] と進み、 Windows Update を行います。Update後は再起動も行っておきます。 -
インターネットエクスプローラーを起動して下記URLを入力し、エージェントをダウンロードします。
https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi
警告に対しては、[追加] > [追加] > [閉じる] と進みます。
[保存] > [実行] と進み、ダウンロードしたエージェントのインストールを行います。
- インストールが完了したら、
コントロールパネル > [プログラム] > [プログラムと機能] と進み、
インストールされているプログラムの中に「Amazon CloudWatch Agent」がある事を確認します。
- インストール後は不要なファイルを削除しておきます。
以上でエージェントのインストールが完了しました。
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でエージェントを起動させます。
-
PowerShellを管理者権限で起動します。
-
ディレクトリを移動し、エージェントを起動させます。
> cd 'C:\Program Files\Amazon\AmazonCloudWatchAgent\'
> ./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s
動作確認
CloudWatch のマネジメントコンソールにて
ロググループ、ログストリーム、ログイベントを確認していきます。
-
CloudWatch のマネジメントコンソールに移動します。
-
ロググループ、ログストリーム、ログイベントが作成されている事を確認していきます。
お疲れ様でした。
以上で CloudWatch Logs で AWS EC2 Windows インスタンスのイベントログを管理する手順が完了しました。
カスタムメトリクスの追加やアラーム作成なども行う予定でしたが、
長くなってしまったのでまた別記事で書きたいと思います。
この記事がエンジニア初学者の参考になれば幸いです。
最後まで読んでいただきありがとうございました。