AWS CloudWatch LogsでWindows OSのイベントログを収集する

2014.10.22

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

ども、大瀧です。A CloudWatch Logsはニアリアルタイムなログストアとして主にLinux向けに利用されてきました。APIをコールするだけなので技術的にはWindowsからでも使えるのですが、AWSが提供する標準ツールが無くてなかなか手が出せなかったのではないでしょうか。

今朝未明にWindows AMIに同梱されるエージェントEC2ConfigがCloudWatch Logsに対応し、Windowsのイベントログを送信できるようになったので、早速試してみました!

動作確認環境

  • AMI : Microsoft Windows Server 2012 R2 Base - ami-c9466bc8(東京リージョン)

IAMロールの割り当て

EC2ConfigからCloudWatch APIにアクセスするためのAPIキーが必要です。IAMユーザーを作成、APIキーを発行しても良いのですが、よりセキュアな方法としてIAMロールがオススメです。以下の権限を設定したIAMロールを作成し、EC2インスタンス起動時に設定しましょう。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "cloudwatch:*",
        "logs:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

EC2Configの構成

起動したインスタンスにRDP接続し、EC2Configの設定画面を開きます。スタートメニューから下矢印のボタンでアプリケーション一覧を表示し、[EC2ConfigService Settings]をクリックします。

cloudwatch-ec2config01

cloudwatch-ec2config02

既定ではCloudWatch Logsへのログ出力は無効になっているので、[CloudWatch Logs]セクションの[Enable CloudWatch Logs integration]のチェックをオンにし、有効化します。続いて[Settigns]ボタンからログ送信設定画面を開きます。

cloudwatch-ec2config03

EC2Configのバージョン2.2.10以降では、設定ボタンが削除され、有効/無効のみ切り替えられるようです。設定は別途、以下のテキストファイルをエディタで開き編集することになります。
%PROGRAMFILES%\Amazon\Ec2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json
設定項目はAWSドキュメント を参照ください。

[Region]では、CloudWatch Logsのエンドポイントのリージョンを選択します。インスタンスを実行するリージョンではないことに注意します。今回はバージニア(us-east-1)を選択します。[CloudWatch Logs]セクションでは、ログの格納単位であるLog GroupLog streamを設定します。多くの場合、Log streamはインスタンスIDで問題ないと思いますので、必要に応じて[Log Group]を変更しましょう。今回はどちらも初期値のままにします。

cloudwatch-ec2config04

[Event Logs]タブでは、送信するログの種類を選択できます。

cloudwatch-ec2config05

設定できたら、[OK] - [OK]とクリックし、設定は完了です。変更した設定の反映には、EC2Configサービスの再起動が必要ですので、サービス管理画面からRestartを実行します。

cloudwatch-ec2config06-1

これで、ログの送信がスタートするはずです。

Management Consoleでのログ出力の確認

AWS Management ConsoleのCloudWatchの画面から、送信したログを確認します。EC2Configの設定で選択した送信先リージョンを選択、[CloudWatch] - [Logs]をメニューから選択します。Log Group一覧に、こちらもEC2Configの設定で指定したLog Groupが表示されているはずです。グループ名をクリックします。

cloudwatch-ec2config07

Log Stream一覧に、EC2インスタンスのインスタンスIDが表示されるはずです。クリックします。

cloudwatch-ec2config08

ログが表示されました!収集したログを検索したり、キーワードベースでアラームを設定することもできます!

cloudwatch-ec2config09

収集したログを検索したり、キーワードベースでアラームを設定することもできます!詳しくは横田のエントリーを参照ください。

まとめ

AWSのブログではEC2Configの設定ファイルを直接編集する手順が紹介されていましたが、EC2ConfigのGUIだけでかなり簡単に設定することができました!小規模なWindowsログ管理であれば、すぐにはじめられるCloudWatch Logsが有力な選択肢になると思います!

また、今回のアップデートでEC2ConfigにCloudWatchカスタムメトリクスをPutする機能も追加されました。早速弊社佐々木がブログにまとめていますので、こちらもどうぞ!