こんにちは
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
今回はタイトル通り、WindowsのEventlog(Application,System,Security)をCloudWatch Logsで確認できるようにしていきたいと思います。
近いうちにCloudWatch LogsからS3に対して自動で退避する方法も確認していきます。
用語
CloudWatch
Claudeから解説をしてもらいます。
AWSリソース(EC2インスタンス、Lambda関数など)のメトリクスを収集、視覚化する
これらのメトリクスに基づいてアラームを設定し、異常を検知できる
自動スケーリンググループへのメトリクスの提供も可能
CloudWatch Logs
こちらもClaudeから解説をしてもらいます。
EC2インスタンス、LambdaなどのログデータをCloudWatchLogsに転送し、中央集約できる
ログデータに対して検索やフィルタリングが可能
ログデータをメトリクスとして可視化したり、アラームを設定したりできる
ログの保存期間やアクセス制御の設定が可能
CloudWatchはメトリクス収集と監視に特化しており、CloudWatch Logsはログの集約と分析に特化したサービスです。これらを組み合わせることで、AWSリソースの状態を包括的に監視できるようになります。
環境イメージ
EC2に対してCloudWatchにアップロードするためのIAM Roleをアタッチします。
また、CloudWatch Agentをインストールします。
前提として、以下の環境に設定を追加していっています。
構築
IAM Role作成
EC2にアタッチされているIAM Roleに対してCloudWatchへのアクセス権を追加していきます。
CloudWatchLogsFullAccessを選択して追加していきます。
Windows ServerにCloudWatch Agentを導入する
任意のWebブラウザで以下のURLにアクセスし、msiをダウンロードします
msiがダウンロードできましたらダブルクリックし、実行します。
実行後特にポップアップするようなことはありませんでした。
Control Panel > Programs > Programs and FeaturesにAmazon CloudWatch Agentが表示されていることを確認します。表示されていればOKです。
C:\Users\Administrator\Documentsにamazon-cloudwatch-agent.jsonという設定ファイルを作成します。これがCloudWatch Agentの設定ファイルになっていきます。
設定ファイルの中身は以下としました。
{
"logs": {
"logs_collected": {
"windows_events": {
"collect_list": [
{
"event_name": "System",
"log_group_name": "SystemEventLog",
"log_stream_name": "{instance_id}",
"event_levels": [
"ERROR",
"WARNING",
"INFORMATION"
]
},
{
"event_name": "Application",
"log_group_name": "ApplicationEventLog",
"log_stream_name": "{instance_id}",
"event_levels": [
"ERROR",
"WARNING",
"INFORMATION"
]
},
{
"event_name": "Security",
"log_group_name": "SecurityEventLog",
"log_stream_name": "{instance_id}",
"event_levels": [
"ERROR",
"WARNING",
"INFORMATION"
]
}
]
}
}
}
}
powershellを起動して以下のコマンドを実行します。先ほど作成したjsonファイルを使ってCloudWatch Agentを起動させていているイメージかと思います。
PS C:\Users\Administrator> & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -c file:"C:\Users\Administrator\Documents\amazon-cloudwatch-agent.json" -s
****** processing amazon-cloudwatch-agent ******
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 timesSuccessfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_amazon-cloudwatch-agent.json.tmp
Start configuration validation...
2024/06/16 07:53:05 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_amazon-cloudwatch-agent.json.tmp ...
2024/06/16 07:53:05 I! Valid Json input schema.
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 times2024/06/16 07:53:05 Configuration validation first phase succeeded
Configuration validation second phase succeeded
Configuration validation succeeded
AmazonCloudWatchAgent has been stopped
AmazonCloudWatchAgent has been started
CloudWatchで確認
AWS管理コンソールでCloudWatchに移動し、ログ>ロググループに遷移します。
JSONファイル内のlog_group_nameが表示されることを確認します。
スクショではSecurityEventLogとSystemEventLogが表示されていることがわかります。
logを確認するにはロググループを選択して、ログストリームタブから遷移することで確認することが可能です。
出力されたログについては例えば以下の様なものになります。
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System><Provider Name='Service Control Manager' Guid='{555908d1-a6d7-4695-8e1e-26931d2012f4}' EventSourceName='Service Control Manager'/><EventID Qualifiers='16384'>7036</EventID><Version>0</Version><Level>4</Level><Task>0</Task><Opcode>0</Opcode><Keywords>0x8080000000000000</Keywords><TimeCreated SystemTime='2024-06-16T08:00:44.0253181Z'/><EventRecordID>94690</EventRecordID><Correlation/><Execution ProcessID='768' ThreadID='5940'/><Channel>System</Channel><Computer>EC2AMAZ-GDJBO1N</Computer><Security/></System><EventData><Data Name='param1'>AppX Deployment Service (AppXSVC)</Data><Data Name='param2'>stopped</Data><Binary>41007000700058005300760063002F0031000000</Binary></EventData><RenderingInfo Culture='en-US'><Message>The AppX Deployment Service (AppXSVC) service entered the stopped state.</Message><Level>Information</Level><Task></Task><Opcode></Opcode><Channel></Channel><Provider>Microsoft-Windows-Service Control Manager</Provider><Keywords><Keyword>Classic</Keyword></Keywords></RenderingInfo></Event>
Windows Server側も同じ時間帯に同じlogが出力されています。
CloudWatch LogsにXML形式でアップロードされていそうです。
問題なくログ取集できていそうですね。
2024/6/18 追記
この記事の続きとしてCloudWtach LogsにアップロードしたlogをS3に手動でエクスポートする方法も確認しました。近いうちに自動化までもっていきます。