

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 快速入門：讓執行 Windows Server 2016 的 Amazon EC2 執行個體使用 CloudWatch Logs 代理程式將日誌傳送到 CloudWatch Logs
<a name="QuickStartWindows2016"></a>

**提示**  
CloudWatch 包含新的統一代理程式，可從 EC2 執行個體和內部部署伺服器同時收集日誌和指標。我們建議您使用新版的統一 CloudWatch 代理程式。如需詳細資訊，請參閱[開始使用 CloudWatch Logs](CWL_GettingStarted.md)。  
本節的其他部分說明舊版 CloudWatch Logs 代理程式的使用方式。

## 讓執行 Windows Server 2016 的 Amazon EC2 執行個體使用舊版 CloudWatch Logs 代理程式將日誌傳送到 CloudWatch Logs
<a name="QuickStartWindows2016-olderagent"></a>

有多種方法可讓執行 Windows Server 2016 的執行個體將日誌傳送到 CloudWatch Logs。本節中的步驟使用 Systems Manager Run Command。如需其他可能的方法的詳細資訊，請參閱[將日誌、事件，以及效能計數器傳送到 Amazon CloudWatch](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl.html)。

**Topics**
+ [下載範例組態檔案](#configure_cwl_download)
+ [設定 CloudWatch 的 JSON 檔案](#send_logs_to_cwl_json)
+ [建立 Systems Manager 的 IAM 角色](#iam_permissions)
+ [驗證 Systems Manager 先決條件](#send_logs_cwl_syspre)
+ [驗證網際網路存取](#send_logs_cwl_internet)
+ [使用 Systems Manager Run Command 以啟用 CloudWatch Logs](#remote-commands-cloudwatch)

### 下載範例組態檔案
<a name="configure_cwl_download"></a>

將以下範例檔案下載到您的電腦：[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)。

### 設定 CloudWatch 的 JSON 檔案
<a name="send_logs_to_cwl_json"></a>

在組態檔案中指定您的選擇，以決定將哪些日誌傳送到 CloudWatch。建立此檔案並指定選擇的程序。需要 30 分鐘或更久的時間完成。一旦完成此工作，您就可以在所有的執行個體上重複使用該組態檔案。

**Topics**
+ [步驟 1：啟用 CloudWatch Logs](#enable-CloudWatchLogs-in-JSON-file)
+ [步驟 2：進行 CloudWatch 的設定](#configure_cwl_credentials)
+ [步驟 3：設定要傳送的資料](#configure_logs)
+ [步驟 4：設定流程控制](#configure_log_flow)
+ [步驟 5：儲存 JSON 內容](#save_json_content)

#### 步驟 1：啟用 CloudWatch Logs
<a name="enable-CloudWatchLogs-in-JSON-file"></a>

在 JSON 檔案頂部，針對 `IsEnabled` 將「false」變更為「true」。

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

#### 步驟 2：進行 CloudWatch 的設定
<a name="configure_cwl_credentials"></a>

指定憑證、區域、日誌群組名稱和日誌串流命名空間。這可讓執行個體將日誌資料傳送到 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}"
       }
   },
   ```

1.  將 `AccessKey` 和 `SecretKey` 欄位保留空白。使用 IAM 角色設定憑證。

1. 針對 `Region`，輸入日誌資料要送往的區域 (例如，`us-east-2`)。

1. 針對 `LogGroup`，輸入您日誌群組的名稱。此名稱會在 CloudWatch 主控台的 **Log Groups** (日誌群組) 畫面上出現。

1. 針對 `LogStream`，輸入目的地日誌串流。此名稱會在 CloudWatch 主控台的 **Log Groups > Streams** (日誌群組 > 串流) 畫面上出現。

   若使用 `{instance_id}` (預設值)，日誌串流名稱則為此執行個體的執行個體 ID。

   如果指定的日誌串流名稱尚未存在，CloudWatch Logs 會自動為您建立。您可以使用常值字串、預先定義的變數 `{instance_id}`、`{hostname}` 和 `{ip_address}`，或是組合這些項目，來定義日誌串流名稱。

#### 步驟 3：設定要傳送的資料
<a name="configure_logs"></a>

您可以將事件日誌資料、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"
       }
   },
   ```

1. 針對 `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"
       }
   },
   ```

1. 針對 `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"
       }
   },
   ```

1. 針對 `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"
       }
   },
   ```

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 Logs**

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 中`Language tag`產品行為[主題中表格的 ](https://msdn.microsoft.com/en-us/library/cc233982.aspx) 欄。
**注意**  
不支援 `div`、`div-MV`、`hu` 和 `hu-HU` 值。

1. (選用) 針對 `TimeZoneKind`，請輸入 `Local` 或 `UTC`。您可以設定此以在日誌時間戳記未包含任何時區資訊時提供時區資訊。如果此參數空白，且如果您的時間戳記不包含時區資訊，則 CloudWatch Logs 預設為本機時區。如果您的時間戳記已包含時區資訊，則會忽略此參數。

1. (選用) 針對 `LineCount`，輸入標頭中的行數，以辨識日誌檔案。例如，IIS 日誌檔幾乎都具有相同的標頭。您可以輸入 **5**，這會讀取日誌檔標頭的前三行來進行辨識。在 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"
       }
   },
   ```

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 上的[編碼類別](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 中`Language tag`產品行為[主題中表格的 ](https://msdn.microsoft.com/en-us/library/cc233982.aspx) 欄。
**注意**  
不支援 `div`、`div-MV`、`hu` 和 `hu-HU` 值。

1. (選用) 針對 `TimeZoneKind`，輸入 `Local` 或 `UTC`。您可以設定此以在日誌時間戳記未包含任何時區資訊時提供時區資訊。如果此參數空白，且如果您的時間戳記不包含時區資訊，則 CloudWatch Logs 預設為本機時區。如果您的時間戳記已包含時區資訊，則會忽略此參數。

1. (選用) 針對 `LineCount`，輸入標頭中的行數，以辨識日誌檔案。例如，IIS 日誌檔幾乎都具有相同的標頭。您可以輸入 **5**，這會讀取日誌檔標頭的前五行來進行辨識。在 IIS 日誌檔中，第三行是日期和時間戳記，但不保證時間戳記在日誌檔間總是不同的。因此，我們建議包括至少一行實際的日誌資料，以唯一辨識日誌檔的指紋。

#### 步驟 4：設定流程控制
<a name="configure_log_flow"></a>

每個資料類型必須擁有在 `Flows` 區段中的相對應目的地。例如，若要將自訂日誌、ETW 日誌和系統日誌傳送到 CloudWatch Logs，請將 `(CustomLogs,ETW,SystemEventLog),CloudWatchLogs` 新增至 `Flows` 區段。

**警告**  
加入無效的步驟會阻礙流程。例如，如果新增磁碟指標步驟，但執行個體沒有磁碟，則流程中的所有步驟都會遭到封鎖。

您可以將相同的日誌檔傳送到多個目的地。例如，如果要將應用程式日誌傳送到您在 `CloudWatchLogs` 區段中所定義的兩個不同目的地，請在 `Flows` 區段中加入 `ApplicationEventLog,(CloudWatchLogs,CloudWatchLogs2)`。

**設定流程控制**

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`)。

#### 步驟 5：儲存 JSON 內容
<a name="save_json_content"></a>

您現在已經完成編輯 JSON 檔案。進行儲存，並將檔案內容貼到另一個視窗中的文字編輯器。您將需要此程序在後續步驟中的檔案內容。

### 建立 Systems Manager 的 IAM 角色
<a name="iam_permissions"></a>

當您使用 Systems Manager Run Command 時，需要執行個體憑證的 IAM 角色。此角色可讓 Systems Manager 在執行個體上執行動作。如需詳細資訊，請參閱《AWS Systems Manager 使用者指南》**中的[設定 Systems Manager 的安全性角色](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-access.html)。如需如何將 IAM 角色連接至現有執行個體的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[將 IAM 角色連接至執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)。

### 驗證 Systems Manager 先決條件
<a name="send_logs_cwl_syspre"></a>

使用 Systems Manager Run Command 來設定與 CloudWatch Logs 整合之前，請確認您的執行個體符合最低要求。如需詳細資訊，請參閱《AWS Systems Manager 使用者指南》**中的 [Systems Manager 先決條件](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html)。

### 驗證網際網路存取
<a name="send_logs_cwl_internet"></a>

Amazon EC2 Windows Server 執行個體和受管執行個體必須有對外網際網路存取，才能將日誌和事件資料傳送到 CloudWatch。如需有關如何設定網際網路存取的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)。

### 使用 Systems Manager Run Command 以啟用 CloudWatch Logs
<a name="remote-commands-cloudwatch"></a>

Run Command (執行指令) 可讓您隨需管理執行個體的組態。您指定 Systems Manager 文件、指定參數，然後在一或多個執行個體上執行命令。執行個體上的 SSM Agent 會依指定來處理命令和設定執行個體。

**使用 Run Command 設定與 CloudWatch Logs 整合**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 開啟位於 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 的 SSM 主控台。

1. 在導覽窗格中，選擇 **執行命令**。

1. 選擇 **Run a command** (執行指令)。

1. 針對 **Command document** (指令文件)，選擇 **AWS-ConfigureCloudWatch**。

1. 針對 **Target instances** (目標執行個體)，選擇要與 CloudWatch Logs 整合的執行個體。如果執行個體未出現於此清單中，可能是無法針對 Run Command 進行設定。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Systems Manager 先決條件](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/systems-manager-setting-up.html)。

1. 針對 **Status** (狀態)，請選擇 **Enabled** (啟用)。

1. 對於 **Properties** (屬性)，複製並貼上您在之前任務建立的 JSON 內容。

1. 完成填寫剩下的選填欄位，然後選擇 **Run** (執行)。

使用下列程序，在 Amazon EC2 主控台檢視命令執行的結果。

**在主控台中檢視指令輸出**

1. 選取指令。

1. 選擇 **Output** (輸出) 索引標籤。

1. 選擇 **View Output** (檢視輸出)。此指令輸出頁面會顯示指令執行的結果。