CloudWatch AgentでWindows OSログを収集する


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

CloudWatch AgentでWindows OSログを収集する

Amazon CloudWatch Logs を使用して、EC2インスタンス、AWS CloudTrail、Route 53、およびその他のソースのログファイルの監視、保存、アクセスができます。

普段LinuxサーバでCloudwatch Agentを利用してログ収集することが多く、今回はWindowsの収集方法及び設定時に遭った問題についてご紹介します。

動作確認環境

Windows_Server-2016-English-Full-Base-2021.02.10(東京リージョン)

検証環境設定

1.EC2にIAMロールを割り当て

多くのポリシーはAWS側事前に作成してくれたので、下記のポリシーを利用してIAMロールを作成する

policy

上記ポリシーを利用しているIAMロールをEC2に割り当てる

2.Cloudwatchエージェントをインストール

以下のURLを参照してエージェントインストーラーをダウンロードしてインストールできるので

詳細の説明は割愛します。

コマンドラインを使用して CloudWatch エージェントをインストールする

3.Configファイルの設定

ウィザードを利用してエージェントの初期設定ができますが、AWSドキュメントを参照して各項目もカスタマイズできるので今回テスト用で以下の内容を設定する。

{
   "agent":{
      "metrics_collection_interval":300
   },
   "logs":{
      "logs_collected":{
         "files":{
            "collect_list":[
               {
                  "file_path":"C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log",
                  "log_group_name":"TEST-Cloudwatchlog-001",
                  "log_stream_name":"{local_hostname}-{instance_id}-C\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log"
               }
            ]
         },
         "windows_events":{
            "collect_list":[
               {
                  "event_format":"xml",
                  "event_levels":[
                     "VERBOSE",
                     "INFORMATION",
                     "WARNING",
                     "ERROR",
                     "CRITICAL"
                  ],
                  "event_name":"Security",
                  "log_group_name":"TEST-Cloudwatchlog-001",
                  "log_stream_name":"{local_hostname}-{instance_id}-win-security"
               }
            ]
         }
      }
   }
}

ログファイルだけではなく、Windowsのシステムイベントログも収集できます。

4.ログ収集確認

編集後のConfigファイルはデフォルトで以下に置きます。

置き後にサービスを起動します。

AWSマネジメントコンソール上で正しくアップロードされることが確認できました。

5.注意すること

ここでConfigファイル設定時に注意しないといけないことをご説明します。

自分も最初何回試してアップロードできなかったです。

まず、jsonファイルの制限で\\\にしないとAgent起動時にフォーマットチェックエラーになります。

そして、どのログが収集されたのかわかるようにするために、フルパスでログストリーム名を設定しましたが、最初はうまくアップロードできませんでした。

調査したところ、以下のAPIを参照したら、logStreamNameに:*が設定できないようです。

PutLogEvents

logStreamName

The name of the log stream.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 512.

Pattern: [^:*]*

Required: Yes

最後に

今回ログ収取の方法をご紹介しましたが、ログだけではなく、他に監視したいシステム項目(メトリクス)もカスタマイズでき、すごく便利です。ただし、実際にやらないと、色んなところで設定ミスがあるかもしれませんので皆さんもぜひやってみましょう!

Last modified: 2024-02-05

Author