

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 快速入门：允许运行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 实例向日志发送 CloudWatch 日志
<a name="QuickStartWindows20082012"></a>

**提示**  
CloudWatch 包括一个新的统一代理，可以从 EC2 实例和本地服务器收集日志和指标。我们建议您使用较新的统一 CloudWatch 代理。有关更多信息，请参阅 [CloudWatch 日志入门](CWL_GettingStarted.md)。  
本节的其余部分将介绍使用较旧的 CloudWatch Logs 代理。

## 允许运行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 实例向日志发送 CloudWatch 日志
<a name="QuickStartWindows20082012-olderagent"></a>

使用以下步骤使运行 Windows Server 2012 和 Windows Server 2008 的实例能够将日志发送到 CloudWatch 日志。

### 下载示例配置文件
<a name="configure_cwl_download2012"></a>

将以下示例 JSON 文件下载到您的计算机：[https://s3.amazonaws.com/ec2-downloads-windows/CloudWatchConfig/AWS.EC2.Windows.CloudWatch.json](https://s3.amazonaws.com/ec2-downloads-windows/CloudWatchConfig/AWS.EC2.Windows.CloudWatch.json)。您将在后续步骤中编辑该文件。

### 配置 JSON 文件用于 CloudWatch
<a name="send_logs_to_cwl_json2012"></a>

您可以 CloudWatch 通过在 JSON 配置文件中指定您的选择来确定要发送到哪些日志。创建此文件并指定您的选择的过程可能需要 30 分钟或更长时间才能完成。完成此任务一次后，您可以在所有实例上重复使用此配置文件。

**Topics**
+ [步骤 1：启用 CloudWatch 日志](#enable-CloudWatchLogs-in-JSON-file2012)
+ [步骤 2：配置以下各项的设置 CloudWatch](#configure_cwl_credentials2012)
+ [步骤 3：配置要发送的数据](#configure_logs2012)
+ [步骤 4：配置流程控制](#configure_log_flow2012)

#### 步骤 1：启用 CloudWatch 日志
<a name="enable-CloudWatchLogs-in-JSON-file2012"></a>

在 JSON 文件的顶部，将 `IsEnabled` 的“false”改为“true”：

```
"IsEnabled": true,
```

#### 步骤 2：配置以下各项的设置 CloudWatch
<a name="configure_cwl_credentials2012"></a>

指定凭证、区域、日志组名称和日志流命名空间。这使实例能够将日志数据发送到 Lo CloudWatch gs。要将相同的日志数据发送到不同的位置，您可以为每个 ID 添加具有唯一性 IDs（例如 “CloudWatchLogs2” 和 CloudWatchLogs “3”）和不同区域的其他部分。

**配置设置以将日志数据发送到 CloudWatch 日志**

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}"
       }
   },
   ```

1.  将 `AccessKey` 和 `SecretKey` 字段留空。您将使用 IAM 角色配置凭证。

1. 对于 `Region`，键入要向其中发送日志数据的区域（例如 `us-east-2`）。

1. 对于 `LogGroup`，键入您的日志组的名称。此名称显示在 ** 控制台的**日志组 CloudWatch屏幕上。

1. 对于 `LogStream`，键入目标日志流。此名称显示在 CloudWatch 控制台的 “**日志组” > “流**” 屏幕上。

   如果使用 `{instance_id}`，则在默认情况下，日志流名称是该实例的实例 ID。

   如果您指定的日志流名称尚不存在，Lo CloudWatch gs 会自动为您创建该名称。您可以使用文字字符串、预定义变量 `{instance_id}`、`{hostname}` 和 `{ip_address}` 或它们的组合定义日志流名称。

#### 步骤 3：配置要发送的数据
<a name="configure_logs2012"></a>

您可以将事件日志数据、Windows 事件跟踪 (ETW) 数据和其他日志数据发送到 CloudWatch 日志。

**将 Windows 应用程序事件日志数据发送到 CloudWatch 日志**

1. 在 JSON 文件中，找到 `ApplicationEventLog` 部分。

   ```
   {
       "Id": "ApplicationEventLog",
       "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
       "Parameters": {
           "LogName": "Application",
           "Levels": "1"
       }
   },
   ```

1. 对于 `Levels`，指定要上传的消息类型。可以指定以下值之一：
   + **1** – 仅上传错误消息。
   + **2** – 仅上传警告消息。
   + **4** – 仅上传信息消息。

   您可以将这些值组合在一起，以包含多种类型的消息。例如，一个包含 **3** 个上传错误消息（**1**）和警告消息（**2**）的值。一个包含 **7** 个上传错误消息（**1**）、警告消息（**2**）和信息消息（**4**）的值。

**将安全日志数据发送到 CloudWatch 日志**

1. 在 JSON 文件中，找到 `SecurityEventLog` 部分。

   ```
   {
       "Id": "SecurityEventLog",
       "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
       "Parameters": {
           "LogName": "Security",
           "Levels": "7"
       }
   },
   ```

1. 对于 `Levels`，键入 **7** 以上传所有消息。

**将系统事件日志数据发送到 CloudWatch 日志**

1. 在 JSON 文件中，找到 `SystemEventLog` 部分。

   ```
   {
       "Id": "SystemEventLog",
       "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
       "Parameters": {
           "LogName": "System",
           "Levels": "7"
       }
   },
   ```

1. 对于 `Levels`，指定要上传的消息类型。可以指定以下值之一：
   + **1** – 仅上传错误消息。
   + **2** – 仅上传警告消息。
   + **4** – 仅上传信息消息。

   您可以将这些值组合在一起，以包含多种类型的消息。例如，一个包含 **3** 个上传错误消息（**1**）和警告消息（**2**）的值。一个包含 **7** 个上传错误消息（**1**）、警告消息（**2**）和信息消息（**4**）的值。

**将其他类型的事件日志数据发送到 CloudWatch 日志**

1. 在 JSON 文件中，添加新部分。每个部分必须有一个独立的 `Id`。

   ```
   {
       "Id": "Id-name",
       "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
       "Parameters": {
           "LogName": "Log-name",
           "Levels": "7"
       }
   },
   ```

1. 对于 `Id`，键入要上传的日志的名称（例如 **WindowsBackup**）。

1. 对于 `LogName`，请键入要上传的日志的名称。您可以按如下步骤找到日志的名称。

   1. 打开事件查看器。

   1. 在导航窗格中，选择 **Applications and Services Logs（应用程序和服务日志）**。

   1. 导航到该日志，然后选择 **Actions（操作）**、**Properties（属性）**。

1. 对于 `Levels`，指定要上传的消息类型。可以指定以下值之一：
   + **1** – 仅上传错误消息。
   + **2** – 仅上传警告消息。
   + **4** – 仅上传信息消息。

   您可以将这些值组合在一起，以包含多种类型的消息。例如，一个包含 **3** 个上传错误消息（**1**）和警告消息（**2**）的值。一个包含 **7** 个上传错误消息（**1**）、警告消息（**2**）和信息消息（**4**）的值。

**将 Windows 的事件跟踪数据发送到 CloudWatch 日志**

ETW（Windows 事件跟踪）提供高效且详细的日志记录机制，供应用程序写入日志。每个 ETW 都由可以启动和停止日志记录会话的会话管理器控制。每个会话都具有一个提供者以及一个或多个使用者。

1. 在 JSON 文件中，找到 `ETW` 部分。

   ```
   {
       "Id": "ETW",
       "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
       "Parameters": {
           "LogName": "Microsoft-Windows-WinINet/Analytic",
           "Levels": "7"
       }
   },
   ```

1. 对于 `LogName`，请键入要上传的日志的名称。

1. 对于 `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"
       }
   },
   ```

1. 对于 `LogDirectoryPath`，键入日志在实例上的存储路径。

1. 对于 `TimestampFormat`，请键入要使用的时间戳格式。有关支持的值的更多信息，请参阅 MSDN 上的[自定义日期和时间格式字符串](https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx)主题。
**重要**  
源日志文件必须在每个日志行开头具有时间戳，且时间戳后必须有一个空格。

1. 对于 `Encoding`，键入要使用的文件编码（例如 UTF-8）。有关支持的值的更多信息，请参阅 MSDN 上的 [Encoding 类](http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)主题。
**注意**  
使用编码名称，而不是显示名称。

1. （可选）对于 `Filter`，键入日志名称的前缀。将此参数保留空白以监控所有文件。有关支持的值的更多信息，请参阅 MSDN 上的[FileSystemWatcherFilter 属性](https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx)主题。

1. （可选）对于 `CultureName`，键入记录该时间戳的区域。如果 `CultureName` 为空，则它默认为您 Windows 实例当前所使用的相同区域位置。有关支持的值的更多信息，请参阅 MSDN 上[产品行为](https://msdn.microsoft.com/en-us/library/cc233982.aspx)主题中表格的 `Language tag` 列。
**注意**  
不支持值 `div`、`div-MV`、`hu` 和 `hu-HU`。

1. （可选）对于 `TimeZoneKind`，键入 `Local` 或 `UTC`。可以设置此参数以在日志时间戳中不包含时区信息时提供时区信息。如果此参数留空，并且您的时间戳不包含时区信息，则 “ CloudWatch 日志” 默认为本地时区。如果时间戳已包含时区信息，则忽略此参数。

1. （可选）对于 `LineCount`，在标头中键入行数以识别日志文件。例如，IIS 日志文件拥有几乎相同的标头。您可以输入 **5**，系统会读取日志文件标头的前三行以进行识别。在 IIS 日志文件中，第三行为日期和时间戳，但无法始终保证时间戳在日志文件之间是不同的。为此，建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。

**将 IIS 日志数据发送到 CloudWatch 日志**

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"
       }
   },
   ```

1. 对于 `LogDirectoryPath`，输入为单个站点存储的 IIS 日志所在的文件夹（例如 `C:\inetpub\logs\LogFiles\W3SVCn`）。
**注意**  
仅支持 W3C 日志格式。不支持 IIS、NCSA 和自定义格式。

1. 对于 `TimestampFormat`，请键入要使用的时间戳格式。有关支持的值的更多信息，请参阅 MSDN 上的[自定义日期和时间格式字符串](https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx)主题。

1. 对于 `Encoding`，键入要使用的文件编码（例如 UTF-8）。有关支持的值的更多信息，请参阅 MSDN 上的 [Encoding 类](http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx)主题。
**注意**  
使用编码名称，而不是显示名称。

1. （可选）对于 `Filter`，键入日志名称的前缀。将此参数保留空白以监控所有文件。有关支持的值的更多信息，请参阅 MSDN 上的[FileSystemWatcherFilter 属性](https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx)主题。

1. （可选）对于 `CultureName`，键入记录该时间戳的区域。如果 `CultureName` 为空，则它默认为您 Windows 实例当前所使用的相同区域位置。有关支持的值的更多信息，请参阅 MSDN 上[产品行为](https://msdn.microsoft.com/en-us/library/cc233982.aspx)主题中表格的 `Language tag` 列。
**注意**  
不支持值 `div`、`div-MV`、`hu` 和 `hu-HU`。

1. （可选）对于 `TimeZoneKind`，输入 `Local` 或 `UTC`。可以设置此参数以在日志时间戳中不包含时区信息时提供时区信息。如果此参数留空，并且您的时间戳不包含时区信息，则 “ CloudWatch 日志” 默认为本地时区。如果时间戳已包含时区信息，则忽略此参数。

1. （可选）对于 `LineCount`，在标头中键入行数以识别日志文件。例如，IIS 日志文件拥有几乎相同的标头。您可以输入 **5**，系统会读取日志文件标头的前五行以进行识别。在 IIS 日志文件中，第三行为日期和时间戳，但无法始终保证时间戳在日志文件之间是不同的。为此，建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。

#### 步骤 4：配置流程控制
<a name="configure_log_flow2012"></a>

每种数据类型在 `Flows` 部分中都必须具有对应的目标。例如，要将自定义日志、ETW 日志和系统日志发送到 CloudWatch 日志，请`(CustomLogs,ETW,SystemEventLog),CloudWatchLogs`添加到该`Flows`部分。

**警告**  
添加无效的步骤将阻止流。例如，如果您添加了磁盘指标步骤，但实例没有磁盘，则流中的所有步骤都将被阻止。

您可将同一个日志文件发送到多个目标。例如，要将应用程序日志发送到您在 `CloudWatchLogs` 部分中定义的两个不同目标，请将 `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)"
       ]
   }
   ```

1. 对于 `Flows`，添加要上传的每种数据类型（例如 `ApplicationEventLog`）及其目标（例如 `CloudWatchLogs`）。

现在，您已完成编辑 JSON 文件。您将在后面的步骤中用到它。

### 启动该代理
<a name="ec2config2012"></a>

要允许运行 Windows Server 2012 或 Windows Server 2008 的 Amazon EC2 实例向日志发送 CloudWatch 日志，请使用 EC2 Config 服务 (`EC2Config.exe)`。您的实例应该有 EC2 Config 4.0 或更高版本，您可以使用此过程。

**CloudWatch 使用 EC2 Config 4.x 进行配置**

1. 检查您在此过程前面编辑的 `AWS.EC2.Windows.CloudWatch.json` 文件的编码。只支持不含 BOM 的 UTF-8 编码。然后将文件保存在 Windows Server 2008 - 2012 R2 实例上的以下文件夹内：`C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\`。

1. 使用 Windows 服务控制面板或使用以下 PowerShell 命令启动或重新启动 SSM 代理 (`AmazonSSMAgent.exe`)：

   ```
   PS C:\> Restart-Service AmazonSSMAgent
   ```

SSM 代理重新启动后，它会检测配置文件并配置实例以进行集成。 CloudWatch 如果您更改本地配置文件中的参数和设置，则必须重新启动 SSM Agent 来使更改生效。要禁用实例上的 CloudWatch 集成，请更改`IsEnabled`到配置文件`false`并将其保存在配置文件中。