WindowsイベントログをAmazon CloudWatch Logsに流してみた
はじめに
皆様の中で、AWS環境に構築したインスタンスのログデータを有効活用したいと考えている方も多いのではないでしょうか。
しかし、収集すべきログは無数にあり、場所や種類もバラバラで管理が大変ですよね。このような問題を解決するための方法として、WindowsのイベントログをAmazon CloudWatch Logsに流し込み、管理業務の負担を減らす方法が挙げられます。必要に応じてエラーをメールで通知できるようになる設定も行えるなど、発展性もあるのがポイントです。
今回は、Amazon CloudWatch Logsを利用してWindows イベントログを簡単に一元管理する方法をご紹介します。
Windows イベントログにはシステムのエラーや警告、セキュリティ関連の重要な情報等が含まれているため、これをAmazon CloudWatch Logsで監視・分析することで、不正アクセスなどの問題の早期解決や、セキュリティ監視の精度を高めることにつながります。
Amazon CloudWatch Logsとは?
Amazon CloudWatch Logsは、AWSクラウド上の様々なリソースやアプリケーションから生成されるログデータの管理を効率的に行うことができるAWSマネージドサービスです。
使用中のすべてのシステム、アプリケーション、AWSサービスからのログをほぼリアルタイムに一元管理ができるようになるだけでなく、Amazon CloudWatchと連携してアラーム通知を設定することなどもでき、とても便利です。
また、CloudWatch Logs Insights(有料)を使用することで、ログデータの高度な検索、分析も可能になります。
ログの保持期間は調整できるので、必要なときに生のログデータにアクセスできるようになります。詳しくは以下サイトもご覧ください。(AWS公式サイト)
Amazon CloudWatch Logs とは
CloudWatch Logs Insights を使用したログデータの分析
Windowsイベントログの特性
そもそもWindowsイベントログとは、ユーザーの意思とは関係なくWindowsが自動的に生成しているログのことです。OS上の動作に関する多様な情報がログとして蓄積され、ユーザーのログインの状況や、どんなアプリをどれくらい使っているのか、といった稼働状況、ファイルへのアクセス管理などが行われています。
Windowsをお使いの場合、今この瞬間も何らかのログが記録されています。現在のイベントログ情報を確認したい時は、Winキー+Rのショートカットキーを入力し[ファイル名を指定して実行]から「eventvwr」と入力することで確認が可能です。
確認可能なログは、セキュリティやアプリ、システムなど複数のカテゴリに分けて確認ができます。必要に応じて、これらを切り替えながら現在の稼働状況の把握に役立てます。
WindowsイベントログをAmazon CloudWatch Logsに流しこむメリット
上述の方法でWindowsのイベントログを確認することは可能ですが、実用性を考えると不便を被ることも少なくありません。本来の監視環境とは別途手動で確認することになるため、ヒューマンエラーの発生や、業務の負担増大につながります。
現在AWSを使用している場合、便利なのがAmazon CloudWatch Logsに流し込むという手法です。ログメッセージの収集に必要な負担を一元化し、効率化につながります。
また、イベントログから取得したエラー通知をユーザーに送るような仕組みを作る上でも、非常に有効です。他のログと合わせて管理し、現場の業務効率化に努めましょう。
Windowsイベントログの大まかな流し込み手順
WindowsイベントログをCloudWatch Logsに流し込む場合、大きく分けて以下のステップを踏むこととなります。
- IAMロールを用意する
- Amazon CloudWatchエージェントをインストールする
- Amazon CloudWatchエージェント設定ファイルを作成する
- エージェントを起動する
ログの送信権限を持ったIAMロールを確保し、EC2インスタンスへのアタッチを実行します。その上でAmazon CloudWatchエージェントをAWS Systems Manager経由でインストールし、設定を行いましょう。
その後、Amazon CloudWatchエージェントの設定ファイルを作成して、Windowsイベントログの収集設定を行います。設定が完了したら、実際にエージェントを起動して正しくログが集められているか、確認してみましょう。
以下の見出しでは、より詳細に流し込み手順を解説します。
設定方法
IAMロールの準備
まず、Amazon CloudWatch Logsにログを送信する権限を持ったIAMロールが必要です。
AWSマネジメントコンソールでIAMサービスを選択し、[ロール]→[ロールを作成]と進み、信頼されたエンティティタイプでは[AWSのサービス]を選択します。
ユースケースは[EC2]を選択します。
許可ポリシーの検索欄で、Amazon CloudWatch Logsへのアクセス権限を持つ以下のポリシーを検索します。
CloudWatchAgentAdminPolicy
→ Amazon CloudWatch エージェントがメトリクスやログをAmazon CloudWatchに書き込むために必要なアクセスを許可します。
CloudWatchAgentServerPolicy
→ 設定ファイルの作成や変更をしないEC2インスタンスに割り当てるポリシー
パラメータストアへのファイルの書き込み、パラメータストアからのファイルのダウンロードを許可します。
今回は「CloudWatchAgentServerPolicy」と入力します。
チェックを入れたら次へ進みます。
任意のロール名を入力しロールが作成できたらEC2サービスに移動し、一覧から対象のEC2インスタンスにチェックを入れ、[アクション]→ [セキュリティ]→[IAM ロールを変更]と進みます。
インスタンスとIAMロールを確認したら[IAM ロールの更新]をして、EC2インスタンスにアタッチしましょう。
▼参考サイト
Amazon CloudWatch エージェントのインストール
WindowsのイベントログをAmazon CloudWatch Logsに送るために、Amazon CloudWatch エージェントをインストールします。(対象のEC2にはSSM Agentがインストールされていることを前提とします。)
今回はAWS Systems Manager を使用してエージェントをダウンロードする方法をご紹介します。
AWS Systems Managerの左ペインから、[フリートマネージャー]を選択します。
対象インスタンスがマネージドノートとして認識(実行中)されていることを確認します。
左ペインから[Run command]を選択します。
[Run command]をクリックします。
検索窓に「AWS-ConfigureAWSPackage」と入力し、コマンドドキュメントから AWS-ConfigureAWSPackage にチェックを入れます。
画面下にコマンドのパラメータ項目があるので、Name に「AmazonCloudWatchAgent」と入力します。
ターゲット項目で[インスタンスを手動で選択する]を選択し、インストールするインスタンスのチェックボックスをクリックします。タグの指定やリソースグループを選択すると、複数台に一括でインストールすることもできます。
Run commandの完全なログを記録したい場合は、出力オプションにS3バケットを指定し、コマンドを実行します。
正常に送信されました!と表示された直後は、ステータスが”進行中”となっていますが…
通常であればすぐに成功に変わります。
Amazon CloudWatch エージェント設定ファイルの作成
新規ディレクトリにエージェント設定ファイルを作成し、Windows イベントログを収集する設定をします。
具体的には、収集したいイベントログのソースやロググループの名前を指定する JSON ファイルです。
一から手動で複雑に作成することもできますが、後から変更できるため、まずは簡単で必要な設定項目を見落としにくいウィザードを使用して Amazon CloudWatch エージェント設定ファイルを作成するのがおすすめです。
設定は質問形式で行われ、設定が完了するとconfig.jsonファイルが作成されます。ログを含む設定の例については、AWS公式ドキュメントを参照してください。
質問が多く少し大変ですが、がんばりましょう!
エージェントの起動
設定ファイルが作成できたら、AWS Systems ManagerでRun Commandまたはコマンドラインを使用してAmazon CloudWatch エージェントを再起動します。設定しただけでは反映されないので、注意してくださいね。
これにより、設定したイベントログがAmazon CloudWatch Logsに送信されるようになります。エージェントを再起動するには、CloudWatch エージェントを起動する の手順をご確認ください。
確認
再起動をしたら、ログデータが正しく送信されているか確認をします。なお、ここでは実際のログが出力されていないと確認できないので注意してください。
Amazon CloudWatchのダッシュボード画面の左ペインから[ロググループ]をクリック
対象のログストリームをクリック
ログイベントが作成されていることが確認できれば、設定完了です!
終わりに
今回は、Windows イベントログをAmazon CloudWatch Logsに流す方法についてご紹介しました。プロジェクトの運用に必要不可欠なログの管理が簡単に行えるようになるのは、非常に効率的で便利ですね!
ぜひこの機会にAmazon CloudWatch エージェントを利用して、Windows イベントログをAmazon CloudWatch Logsに収集してみてはいかがでしょうか?