クイックスタート: Windows Server 2016 を実行している Amazon EC2 インスタンスで CloudWatch Logs エージェントを使用してログを CloudWatch Logs に送信できるようにする - Amazon CloudWatch Logs

クイックスタート: Windows Server 2016 を実行している Amazon EC2 インスタンスで CloudWatch Logs エージェントを使用してログを CloudWatch Logs に送信できるようにする

ヒント

CloudWatch には、EC2 インスタンスとオンプレミスサーバーからログとメトリクスの両方を収集できる新しい統合エージェントが含まれています。新しい統合 CloudWatch エージェントを使用することをお勧めします。詳細については、「CloudWatch Logs の開始方法」を参照してください。

このセクションの残りの部分では、古い CloudWatch Logs エージェントの使用について説明します。

Windows Server 2016 を実行している Amazon EC2 インスタンスで、古い CloudWatch Logs エージェントを使用して CloudWatch Logs にログを送信できるようにする

Windows Server 2016 を実行しているインスタンスで CloudWatch Logs にログを送信するには、複数の方法を使用できます。このセクションのステップでは、Systems Manager Run Command を使用します。他の可能な方法の詳細については、「Amazon CloudWatch へのログ、イベント、パフォーマンスカウンターの送信」を参照してください。

サンプル設定ファイルをダウンロードする

サンプルファイル (AWS.EC2.Windows.CloudWatch.json) をコンピュータにダウンロードします。

CloudWatch の JSON ファイルを設定する

CloudWatch に送信するログを決めるには、設定ファイルで選択して指定します。このファイルを作成し、項目を選択して指定するプロセスは、完了までに 30 分以上かかる場合があります。このタスクを 1 回完了したら、すべてのインスタンスで設定ファイルを再利用できます。

ステップ 1: CloudWatch Logs を有効化する

JSON ファイルの先頭で、IsEnabled の「false」を「true」に変更します。

"IsEnabled": true,

ステップ 2: CloudWatch 設定を構成する

認証情報、リージョン、ロググループ名、およびログストリーム名前空間を指定します。これにより、インスタンスがログデータを CloudWatch Logs に送信できます。同じログデータを複数の異なる宛先に送信する場合は、一意の ID (たとえば「CloudWatchLogs2」および「CloudWatchLogs3」) および各 ID に異なるリージョンを付加してセクションを追加できます。

ログデータを CloudWatch Logs に送信するように設定するには

  1. JSON ファイルで、CloudWatchLogs セクションを見つけます。

    { "Id": "CloudWatchLogs", "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", "Parameters": { "AccessKey": "", "SecretKey": "", "Region": "us-east-1", "LogGroup": "Default-Log-Group", "LogStream": "{instance_id}" } },
  2. [AccessKey] および [SecretKey] フィールドは空白のままにしておきます。IAM ロールを使用して認証情報を設定します。

  3. Region には、ログデータを送信するリージョンを入力します (たとえば、us-east-2)。

  4. LogGroup には、ロググループの名前を入力します。この名前は、CloudWatch コンソールの [Log Groups (ロググループ)] 画面に表示されます。

  5. LogStream には、送信先のログストリームを入力します。この名前は、CloudWatch コンソールの [Log Groups (ロググループ)] > [Streams (ストリーム)] 画面に表示されます。

    デフォルトの {instance_id} を使用する場合、ログストリーム名はこのインスタンスのインスタンス ID です。

    存在しないログストリーム名を特定すると、CloudWatch Logs によってログストリームが自動的に作成されます。リテラル文字列、事前定義された変数 {instance_id}{hostname}{ip_address}、またはこれらの組み合わせを使用してログストリーム名を定義できます。

ステップ 3: 送信するデータを設定する

イベントログデータ、Event Tracing for Windows (ETW) データ、および他のログデータを CloudWatch Logs に送信できます。

Windows アプリケーションイベントログデータを CloudWatch Logs に送信するには

  1. JSON ファイルで、ApplicationEventLog セクションを見つけます。

    { "Id": "ApplicationEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Application", "Levels": "1" } },
  2. Levels には、アップロードするメッセージのタイプを指定します。次のいずれかの値を指定できます。

    • 1 - エラーメッセージだけをアップロードします。

    • 2 - 警告メッセージだけをアップロードします。

    • 4 - 情報メッセージだけをアップロードします。

    値を組み合わせて複数のタイプのメッセージを含めることができます。たとえば、値 3 はエラーメッセージ (1) と警告メッセージ (2) をアップロードします。値 7 は、エラーメッセージ (1)、警告メッセージ (2)、情報メッセージ (4) をアップロードします。

セキュリティログデータを CloudWatch Logs に送信するには

  1. JSON ファイルで、SecurityEventLog セクションを見つけます。

    { "Id": "SecurityEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Security", "Levels": "7" } },
  2. Levels には、7 と入力してすべてのメッセージをアップロードします。

システムイベントログデータを CloudWatch Logs に送信するには

  1. JSON ファイルで、SystemEventLog セクションを見つけます。

    { "Id": "SystemEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "System", "Levels": "7" } },
  2. Levels には、アップロードするメッセージのタイプを指定します。次のいずれかの値を指定できます。

    • 1 - エラーメッセージだけをアップロードします。

    • 2 - 警告メッセージだけをアップロードします。

    • 4 - 情報メッセージだけをアップロードします。

    値を組み合わせて複数のタイプのメッセージを含めることができます。たとえば、値 3 はエラーメッセージ (1) と警告メッセージ (2) をアップロードします。値 7 は、エラーメッセージ (1)、警告メッセージ (2)、情報メッセージ (4) をアップロードします。

他の種類のイベントログデータを CloudWatch Logs に送信するには

  1. JSON ファイルに、新しいセクションを追加します。各セクションには固有の Id が必要です。

    { "Id": "Id-name", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Log-name", "Levels": "7" } },
  2. Id には、アップロードするログの名前を入力します (たとえば、WindowsBackup)。

  3. LogName には、アップロードするログの名前を入力します。ログの名前を次のように確認できます。

    1. イベントビューワーを開きます。

    2. ナビゲーションペインで、[Applications and Services Logs] を選択します。

    3. ログに移動し、[Actions]、[Properties] を選択します。

  4. Levels には、アップロードするメッセージのタイプを指定します。次のいずれかの値を指定できます。

    • 1 - エラーメッセージだけをアップロードします。

    • 2 - 警告メッセージだけをアップロードします。

    • 4 - 情報メッセージだけをアップロードします。

    値を組み合わせて複数のタイプのメッセージを含めることができます。たとえば、値 3 はエラーメッセージ (1) と警告メッセージ (2) をアップロードします。値 7 は、エラーメッセージ (1)、警告メッセージ (2)、情報メッセージ (4) をアップロードします。

イベントトレース (Windows) データを CloudWatch Logs に送信するには

ETW (Event Tracing for Windows) には、アプリケーションがログを書き込むことができる効率的できめ細かいログ記録メカニズムが用意されています。各 ETW は、ログ記録セッションを開始および停止できるセッションマネージャにより制御されます。各セッションには、プロバイダーと 1 つ以上のコンシューマーが存在します。

  1. JSON ファイルで、ETW セクションを見つけます。

    { "Id": "ETW", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Microsoft-Windows-WinINet/Analytic", "Levels": "7" } },
  2. LogName には、アップロードするログの名前を入力します。

  3. Levels には、アップロードするメッセージのタイプを指定します。次のいずれかの値を指定できます。

    • 1 - エラーメッセージだけをアップロードします。

    • 2 - 警告メッセージだけをアップロードします。

    • 4 - 情報メッセージだけをアップロードします。

    値を組み合わせて複数のタイプのメッセージを含めることができます。たとえば、値 3 はエラーメッセージ (1) と警告メッセージ (2) をアップロードします。値 7 は、エラーメッセージ (1)、警告メッセージ (2)、情報メッセージ (4) をアップロードします。

カスタムログ (テキストベースのログファイル) を CloudWatch Logs に送信するには

  1. JSON ファイルで、CustomLogs セクションを見つけます。

    { "Id": "CustomLogs", "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogDirectoryPath": "C:\\CustomLogs\\", "TimestampFormat": "MM/dd/yyyy HH:mm:ss", "Encoding": "UTF-8", "Filter": "", "CultureName": "en-US", "TimeZoneKind": "Local", "LineCount": "5" } },
  2. LogDirectoryPath には、ログがインスタンスに格納されるパスを入力します。

  3. TimestampFormat には、使用するタイムスタンプ形式を入力します。サポートされる値の詳細については、MSDN の「カスタムの日付と時刻の書式指定文字列」を参照してください。

    重要

    ソースログファイルには、各ログ行の先頭にタイムスタンプがあり、タイムスタンプの後にスペースがある必要があります。

  4. Encoding には、使用するファイルエンコード (UTF-8 など) を入力します。サポートされる値の一覧については、MSDN の「Encoding クラス」を参照してください。

    注記

    表示名ではなく、エンコード名を使用します。

  5. (オプション) Filter には、ログファイル名のプレフィックスを入力します。すべてのファイルをモニタリングするには、このパラメータを空白のままにします。サポートされる値の詳細については、MSDN の「FileSystemWatcherFilter プロパティ」を参照してください。

  6. (オプション) CultureName には、タイムスタンプが記録されているロケールを入力します。CultureName が空の場合、Windows インスタンスにより現在使用されているのと同じロケールがデフォルトになります。詳細については、MSDN の「Product Behavior」トピックの表で、Language tag 列を参照してください。

    注記

    divdiv-MVhu、および hu-HU 値は、サポートされていません。

  7. (オプション) TimeZoneKind には、Local または UTC を入力します。これを設定すると、ログのタイムスタンプにタイムゾーン情報が含まれていない場合にタイムゾーン情報を提供できます。このパラメータが空になっていて、タイムスタンプにタイムゾーン情報が含まれていない場合、CloudWatch Logs ではデフォルトでローカルタイムゾーンが使用されます。タイムスタンプに既にタイムゾーン情報が含まれている場合、このパラメータは無視されます。

  8. (オプション) LineCount には、ログファイルを識別するためのヘッダーの行数を入力します。たとえば、IIS のログファイルのヘッダーはほぼ同じです。「5」と入力すると、ログファイルのヘッダーの最初の 3 行が読み取られ、ログファイルを識別できます。IIS ログファイルで、3 番目の行は日時のスタンプですが、タイムスタンプは常にログファイル間で異なるという保証はありません。そのため、ログファイルの一意のフィンガープリントを作成するには、実際のログデータの少なくとも 1 行を含めることをお勧めします。

IIS ログデータを CloudWatch Logs に送信するには

  1. JSON ファイルで、IISLog セクションを見つけます。

    { "Id": "IISLogs", "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogDirectoryPath": "C:\\inetpub\\logs\\LogFiles\\W3SVC1", "TimestampFormat": "yyyy-MM-dd HH:mm:ss", "Encoding": "UTF-8", "Filter": "", "CultureName": "en-US", "TimeZoneKind": "UTC", "LineCount": "5" } },
  2. LogDirectoryPath には、個々のサイト (C:\inetpub\logs\LogFiles\W3SVCn など) の IIS ログが格納されているフォルダを入力します。

    注記

    W3C ログ形式のみサポートされます。IIS、NCSA、カスタム形式はサポートされません。

  3. TimestampFormat には、使用するタイムスタンプ形式を入力します。サポートされる値の詳細については、MSDN の「カスタムの日付と時刻の書式指定文字列」を参照してください。

  4. Encoding には、使用するファイルエンコード (UTF-8 など) を入力します。サポートされる値の詳細については、MSDN の「Encoding クラス」を参照してください。

    注記

    表示名ではなく、エンコード名を使用します。

  5. (オプション) Filter には、ログファイル名のプレフィックスを入力します。すべてのファイルをモニタリングするには、このパラメータを空白のままにします。サポートされる値の詳細については、MSDN の「FileSystemWatcherFilter プロパティ」を参照してください。

  6. (オプション) CultureName には、タイムスタンプが記録されているロケールを入力します。CultureName が空の場合、Windows インスタンスにより現在使用されているのと同じロケールがデフォルトになります。サポートされる値の詳細については、MSDN の「Product Behavior」トピックの表で、Language tag 列を参照してください。

    注記

    divdiv-MVhu、および hu-HU 値は、サポートされていません。

  7. (オプション) TimeZoneKind には、Local または UTC を入力します。これを設定すると、ログのタイムスタンプにタイムゾーン情報が含まれていない場合にタイムゾーン情報を提供できます。このパラメータが空になっていて、タイムスタンプにタイムゾーン情報が含まれていない場合、CloudWatch Logs ではデフォルトでローカルタイムゾーンが使用されます。タイムスタンプに既にタイムゾーン情報が含まれている場合、このパラメータは無視されます。

  8. (オプション) LineCount には、ログファイルを識別するためのヘッダーの行数を入力します。たとえば、IIS のログファイルのヘッダーはほぼ同じです。「5」と入力すると、ログファイルのヘッダーの最初の 5 行が読み取られ、ログファイルを識別できます。IIS ログファイルで、3 番目の行は日時のスタンプですが、タイムスタンプは常にログファイル間で異なるという保証はありません。そのため、ログファイルの一意のフィンガープリントを作成するには、実際のログデータの少なくとも 1 行を含めることをお勧めします。

ステップ 4: フロー制御を設定する

各データ型は、Flows セクションに対応する送信先を持っている必要があります。たとえば、カスタムログ、ETW ログ、およびシステムログを CloudWatch Logs に送信するには、(CustomLogs,ETW,SystemEventLog),CloudWatchLogsFlows セクションに追加します。

警告

無効なブロックを追加すると、フローがブロックされます。たとえば、ディスクメトリクスのステップを追加したが、インスタンスにディスクがない場合は、フローのすべてのステップがブロックされます。

同じログファイルを複数の宛先に送信できます。たとえば、アプリケーションログを CloudWatchLogs セクションで定義付けた 2 つの送信先に送信するには、ApplicationEventLog,(CloudWatchLogs,CloudWatchLogs2)Flows セクションに追加します。

フロー制御を設定するには

  1. AWS.EC2.Windows.CloudWatch.json ファイルで、「Flows」セクションを見つけます。

    "Flows": { "Flows": [ "PerformanceCounter,CloudWatch", "(PerformanceCounter,PerformanceCounter2), CloudWatch2", "(CustomLogs, ETW, SystemEventLog),CloudWatchLogs", "CustomLogs, CloudWatchLogs2", "ApplicationEventLog,(CloudWatchLogs, CloudWatchLogs2)" ] }
  2. Flows には、アップロードされる各データ型 (たとえば、ApplicationEventLog) とその送信先 (たとえば、CloudWatchLogs) を追加します。

ステップ 5: JSON コンテンツを保存する

JSON ファイルの編集はこれで完了です。ファイルを保存し、ファイルコンテンツをテキストエディタ内の別のウィンドウに貼り付けます。ファイルコンテンツは、この手順の後のステップで必要になります。

Systems Manager の IAM ユーザーおよびロールを作成する

インスタンスの認証情報の IAM ロールは、Systems Manager Run Command の実行時に必要になります。このロールにより、Systems Manager はインスタンス上でアクションを実行できます。必要に応じて、Systems Manager を設定して実行するための一意な IAM ユーザーアカウントを作成できます。詳細については、AWS Systems Manager ユーザーガイドの「Systems Manager セキュリティロールの設定」を参照してください。既存のインスタンスへの IAM ロールのアタッチについては、Windows インスタンス用 Amazon EC2 ユーザーガイドの「IAM ロールをインスタンスにアタッチする」を参照してください。

Systems Manager の前提条件を確認する

Systems Manager Run Command を使用して CloudWatch Logs との統合を設定する前に、インスタンスが最低要件を満たしていることを確認してください。詳細については、AWS Systems Manager ユーザーガイドの「Systems Manager の前提条件」を参照してください。

インターネットアクセスを確認する

CloudWatch にログとイベントのデータを送信するには、Amazon EC2 Windows Server のインスタンスとマネージドインスタンスにアウトバウンドのインターネットアクセスが必要です。インターネットアクセスの詳しい設定方法については、Amazon VPC ユーザーガイドの「インターネットゲートウェイ」を参照してください。

Systems Manager Run Command を使用して CloudWatch Logs を有効化する

Run Command では、インスタンスの設定をオンデマンドで管理できます。Systems Manager ドキュメントを指定してパラメータを指定し、1 つ以上のインスタンスでコマンドを実行します。インスタンスの SSM エージェントは、コマンドを処理し、指定されたとおりにインスタンスを設定します。

Run Command を使用して CloudWatch Logs との統合を設定するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. SSM コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  3. ナビゲーションペインで、[Run Command] を選択します。

  4. [Run a command] を選択します。

  5. [Command document] で、[AWS-ConfigureCloudWatch] を選択します。

  6. [Target instances (ターゲットインスタンス)] で、CloudWatch Logs と統合するインスタンスを選択します。このリストに表示されていないインスタンスは、Run Command 用に設定されていない場合があります。詳細については、Windows インスタンス用 Amazon EC2 ユーザーガイドSystems Manager の前提条件を参照してください。

  7. [Status] で、[Enabled] を選択します。

  8. [Properties] で、前のタスクで作成した JSON の内容をコピーして貼り付けます。

  9. 残りのオプションフィールドを入力し、[Run] を選択します。

次の手順を使用して、Amazon EC2 コンソールでコマンドの実行結果を表示します。

コンソールでコマンド出力を表示するには

  1. コマンドを選択します。

  2. [Output] タブを選択します。

  3. [View Output] を選択します。コマンド出力ページには、コマンドの実行結果が表示されます。