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:啟用 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. AccessKeySecretKey 欄位保留空白。使用 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:設定要傳送的資料

您可以將事件日誌資料、適用於 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 (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" } },
  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 中產品行為主題中表格的 Language tag 欄。

    注意

    不支援 divdiv-MVhuhu-HU 值。

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

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

將 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,輸入針對個別網站儲存 IIS 日誌的資料夾 (例如,C:\inetpub\logs\LogFiles\W3SVCn)。

    注意

    只支援 W3C 日誌格式。不支援 IIS、NCSA 和自訂格式。

  3. 針對 TimestampFormat,輸入要使用的時間戳記格式。如需關於支援之值的詳細資訊,請參閱 MSDN 上的自訂日期與時間格式字串主題。

  4. 針對 Encoding,輸入要使用的檔案編碼 (例如,UTF-8)。如需關於支援之值的詳細資訊,請參閱 MSDN 上的編碼類別主題。

    注意

    使用編碼名稱,而非顯示名稱。

  5. (選用) 針對 Filter,輸入日誌名稱的前綴。將此參數留白,以監控所有檔案。如需關於支援之值的詳細資訊,請參閱 MSDN 上的 FileSystemWatcherFilter 屬性主題。

  6. (選用) 針對 CultureName,輸入要記錄時間戳記的地區設定。若 CultureName 留空,其會預設為與 Windows 執行個體目前使用的相同地區設定。如需支援之值的詳細資訊,請參閱 MSDN 中產品行為主題中表格的 Language tag 欄。

    注意

    不支援 divdiv-MVhuhu-HU 值。

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

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

步驟 4:設定流程控制

每個資料類型必須擁有在 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)" ] }
  2. 針對 Flows,新增要上傳的每個資料類型 (例如,ApplicationEventLog) 及其目的地 (例如,CloudWatchLogs)。

步驟 5:儲存 JSON 內容

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

建立 Systems Manager 的 IAM 使用者和角色

當您使用 Systems Manager Run Command 時,執行個體登入資料需要 IAM 角色。此角色可讓 Systems Manager 在執行個體上執行動作。您可以選擇性地建立唯一的 IAM 使用者帳戶,來設定和執行 Systems Manager。如需詳細資訊,請參閱 AWS Systems Manager User Guide中的設定 Systems Manager 的安全性角色。如需有關如何將 IAM 角色連接至現有執行個體的詳細資訊,請參閱 Amazon EC2 User Guide for Windows Instances中的將 IAM 角色連接到執行個體

驗證 Systems Manager 必要條件

使用 Systems Manager Run Command 來設定與 CloudWatch Logs 的整合前,驗證您的執行個體符合最低要求。如需詳細資訊,請參閱《AWS Systems Manager User Guide》中的 Systems Manager 必要條件

驗證網際網路存取

Amazon EC2 Windows Server 執行個體和受管執行個體,必須擁有對外網際網路連線,才能將日誌和事件資料傳送到 CloudWatch。關於如何設定網際網路存取的詳細資訊,請參閱《Amazon VPC User Guide》中的網際網路閘道

使用 Systems Manager Run Command 以啟用 CloudWatch Logs

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

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

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. 在導覽窗格中,選擇 Systems Manager Services ( 服務)Run Command

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

  4. 針對 Command document (指令文件),選擇 AWS-ConfigureCloudWatch (AWS-ConfigureCloudWatch)。

  5. 對於 Target instances (目標執行個體),選擇要與 CloudWatch Logs 整合的執行個體。如果執行個體未出現於此清單中,可能是無法針對 Run Command 進行設定。如需詳細資訊,請參閱 Amazon EC2 User Guide for Windows Instances中的 Systems Manager 必要條件

  6. 針對 Status (狀態),請選擇 Enabled (啟用)。

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

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

執行下列的步驟,在 Amazon EC2 主控台中檢視指令執行的結果。

在主控台中檢視指令輸出

  1. 選取指令。

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

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