本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
快速入門:讓執行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 執行個體將日誌傳送到 CloudWatch Logs
提示
CloudWatch 包含新的統一代理程式,可從 EC2 執行個體和內部部署伺服器同時收集日誌和指標。我們建議您使用新版的統一 CloudWatch 代理程式。如需詳細資訊,請參閱開始使用 CloudWatch Logs。
本節的其他部分說明舊版 CloudWatch Logs 代理程式的使用方式。
讓執行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 執行個體將日誌傳送到 CloudWatch Logs
使用以下步驟讓執行 Windows Server 2012 和 Windows Server 2008 的執行個體將日誌傳送到 CloudWatch Logs。
下載範例組態檔案
將以下範例 JSON 檔案下載到您的電腦:AWS.EC2.Windows.CloudWatch.json
設定 CloudWatch 的 JSON 檔案
在 JSON 組態檔案中指定您的選擇,以決定將哪些日誌傳送到 CloudWatch。建立此檔案並指定選擇的程序。需要 30 分鐘或更久的時間完成。一旦完成此工作,您就可以在所有的執行個體上重複使用該組態檔案。
步驟 1:啟用 CloudWatch Logs
在 JSON 檔案頂部,針對 IsEnabled
將「false」變更為「true」。
"IsEnabled": true,
步驟 2:進行 CloudWatch 的設定
指定憑證、區域、日誌群組名稱和日誌串流命名空間。這可讓執行個體將日誌資料傳送到 CloudWatch Logs。若要將相同的日誌資料傳送到不同的位置,您可以使用唯一的 ID (例如 "CloudWatchLogs2" 和 "CloudWatchLogs3") 新增額外的區段,並為每個 ID 新增不同區域。
進行設定將日誌資料傳送到 CloudWatch Logs
-
在 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}" } },
-
將
AccessKey
和SecretKey
欄位保留空白。使用 IAM 角色設定憑證。 -
針對
Region
,輸入日誌資料要送往的區域 (例如,us-east-2
)。 -
針對
LogGroup
,輸入您日誌群組的名稱。此名稱會在 CloudWatch 主控台的 Log Groups (日誌群組) 畫面上出現。 -
針對
LogStream
,輸入目的地日誌串流。此名稱會在 CloudWatch 主控台的 Log Groups > Streams (日誌群組 > 串流) 畫面上出現。若使用
{instance_id}
(預設值),日誌串流名稱則為此執行個體的執行個體 ID。如果指定的日誌串流名稱尚未存在,CloudWatch Logs 會自動為您建立。您可以使用常值字串、預先定義的變數
{instance_id}
、{hostname}
和{ip_address}
,或是組合這些項目,來定義日誌串流名稱。
步驟 3:設定要傳送的資料
您可以將事件日誌資料、Windows 事件追蹤 (ETW) 資料和其他日誌資料傳送至 CloudWatch Logs。
將 Windows 應用程式事件日誌資料傳送到 CloudWatch Logs
-
在 JSON 檔案中,找到
ApplicationEventLog
區段。{ "Id": "ApplicationEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Application", "Levels": "1" } },
-
針對
Levels
,指定要上傳訊息的類型。您可以指定下列其中一個值:-
1
- 僅上傳錯誤訊息。 -
2
- 僅上傳警告訊息。 -
4
- 僅上傳資訊訊息。
您可以將值組合,以包含多個類型訊息。例如,值為
3
會上傳錯誤訊息 (1
) 和警告訊息 (2
)。值為7
會上傳錯誤訊息 (1
)、警告訊息 (2
) 和資訊訊息 (4
)。 -
將安全性日誌資料傳送到 CloudWatch Logs
-
在 JSON 檔案中,找到
SecurityEventLog
區段。{ "Id": "SecurityEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Security", "Levels": "7" } },
-
針對
Levels
,輸入7
以上傳所有訊息。
將系統事件日誌資料傳送到 CloudWatch Logs
-
在 JSON 檔案中,找到
SystemEventLog
區段。{ "Id": "SystemEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "System", "Levels": "7" } },
-
針對
Levels
,指定要上傳訊息的類型。您可以指定下列其中一個值:-
1
- 僅上傳錯誤訊息。 -
2
- 僅上傳警告訊息。 -
4
- 僅上傳資訊訊息。
您可以將值組合,以包含多個類型訊息。例如,值為
3
會上傳錯誤訊息 (1
) 和警告訊息 (2
)。值為7
會上傳錯誤訊息 (1
)、警告訊息 (2
) 和資訊訊息 (4
)。 -
將其他類型的事件日誌資料傳送到 CloudWatch Logs
-
在 JSON 檔案中新增區段。每個區段必須有唯一的
Id
。{ "Id": "
Id-name
", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Log-name
", "Levels": "7" } }, -
針對
Id
,輸入名稱代表要上傳的日誌 (例如,WindowsBackup
)。 -
針對
LogName
,輸入要上傳日誌的名稱。您可以搜尋日誌的名稱,如下所示。-
開啟事件檢視器。
-
在導覽窗格中,選擇 Applications and Services Logs (應用程式與服務日誌)。
-
導覽至日誌,然後選擇 Actions (動作)、Properties (屬性)。
-
-
針對
Levels
,指定要上傳訊息的類型。您可以指定下列其中一個值:-
1
- 僅上傳錯誤訊息。 -
2
- 僅上傳警告訊息。 -
4
- 僅上傳資訊訊息。
您可以將值組合,以包含多個類型訊息。例如,值為
3
會上傳錯誤訊息 (1
) 和警告訊息 (2
)。值為7
會上傳錯誤訊息 (1
)、警告訊息 (2
) 和資訊訊息 (4
)。 -
將 Windows 事件追蹤資料傳送到 CloudWatch Logs
ETW (Windows 的事件追蹤功能) 提供有效率和詳細的記錄機制,應用程式可將日誌寫入其中。每個 ETW 皆透過工作階段管理員控制,該管理程式可啟動和停止記錄工作階段。每個工作階段都有提供者和一個或多個使用者。
-
在 JSON 檔案中,找到
ETW
區段。{ "Id": "ETW", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Microsoft-Windows-WinINet/Analytic", "Levels": "7" } },
-
針對
LogName
,輸入要上傳日誌的名稱。 -
針對
Levels
,指定要上傳訊息的類型。您可以指定下列其中一個值:-
1
- 僅上傳錯誤訊息。 -
2
- 僅上傳警告訊息。 -
4
- 僅上傳資訊訊息。
您可以將值組合,以包含多個類型訊息。例如,值為
3
會上傳錯誤訊息 (1
) 和警告訊息 (2
)。值為7
會上傳錯誤訊息 (1
)、警告訊息 (2
) 和資訊訊息 (4
)。 -
將自訂日誌 (任何文字型日誌檔案) 傳送到 CloudWatch Logs
-
在 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" } },
-
針對
LogDirectoryPath
,輸入在執行個體上存放日誌的路徑。 -
針對
TimestampFormat
,輸入要使用的時間戳記格式。如需關於支援之值的詳細資訊,請參閱 MSDN 上的自訂日期與時間格式字串主題。 重要
您的原始日誌檔在每個日誌行的開始都必須有時間戳記,且在時間戳記後必須接著一個空格。
-
針對
Encoding
,輸入要使用的檔案編碼 (例如,UTF-8)。如需關於支援之值的詳細資訊,請參閱 MSDN 上的編碼類別主題。 注意
使用編碼名稱,而非顯示名稱。
-
(選用) 針對
Filter
,輸入日誌名稱的前綴。將此參數留白,以監控所有檔案。如需關於支援之值的詳細資訊,請參閱 MSDN 上的 FileSystemWatcherFilter 屬性主題。 -
(選用) 針對
CultureName
,輸入要記錄時間戳記的地區設定。若CultureName
留空,其會預設為與 Windows 執行個體目前使用的相同地區設定。如需支援之值的詳細資訊,請參閱 MSDN 中Language tag
產品行為主題中表格的欄。 注意
不支援
div
、div-MV
、hu
和hu-HU
值。 -
(選用) 針對
TimeZoneKind
,請輸入Local
或UTC
。您可以設定此以在日誌時間戳記未包含任何時區資訊時提供時區資訊。如果此參數空白,且如果您的時間戳記不包含時區資訊,則 CloudWatch Logs 預設為本機時區。如果您的時間戳記已包含時區資訊,則會忽略此參數。 -
(選用) 針對
LineCount
,輸入標頭中的行數,以辨識日誌檔案。例如,IIS 日誌檔幾乎都具有相同的標頭。您可以輸入5
,這會讀取日誌檔標頭的前三行來進行辨識。在 IIS 日誌檔中,第三行是日期和時間戳記,但不保證時間戳記在日誌檔間總是不同的。因此,我們建議包括至少一行實際的日誌資料,做為用來唯一辨識日誌檔的指紋。
將安全性日誌資料傳送到 CloudWatch Logs
-
在 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" } },
-
針對
LogDirectoryPath
,輸入針對個別網站儲存 IIS 日誌的資料夾 (例如,C:\inetpub\logs\LogFiles\W3SVC
)。n
注意
只支援 W3C 日誌格式。不支援 IIS、NCSA 和自訂格式。
-
針對
TimestampFormat
,輸入要使用的時間戳記格式。如需關於支援之值的詳細資訊,請參閱 MSDN 上的自訂日期與時間格式字串主題。 -
針對
Encoding
,輸入要使用的檔案編碼 (例如,UTF-8)。如需關於支援之值的詳細資訊,請參閱 MSDN 上的編碼類別主題。 注意
使用編碼名稱,而非顯示名稱。
-
(選用) 針對
Filter
,輸入日誌名稱的前綴。將此參數留白,以監控所有檔案。如需關於支援之值的詳細資訊,請參閱 MSDN 上的 FileSystemWatcherFilter 屬性主題。 -
(選用) 針對
CultureName
,輸入要記錄時間戳記的地區設定。若CultureName
留空,其會預設為與 Windows 執行個體目前使用的相同地區設定。如需支援之值的詳細資訊,請參閱 MSDN 中Language tag
產品行為主題中表格的欄。 注意
不支援
div
、div-MV
、hu
和hu-HU
值。 -
(選用) 針對
TimeZoneKind
,輸入Local
或UTC
。您可以設定此以在日誌時間戳記未包含任何時區資訊時提供時區資訊。如果此參數空白,且如果您的時間戳記不包含時區資訊,則 CloudWatch Logs 預設為本機時區。如果您的時間戳記已包含時區資訊,則會忽略此參數。 -
(選用) 針對
LineCount
,輸入標頭中的行數,以辨識日誌檔案。例如,IIS 日誌檔幾乎都具有相同的標頭。您可以輸入5
,這會讀取日誌檔標頭的前五行來進行辨識。在 IIS 日誌檔中,第三行是日期和時間戳記,但不保證時間戳記在日誌檔間總是不同的。因此,我們建議包括至少一行實際的日誌資料,以唯一辨識日誌檔的指紋。
步驟 4:設定流程控制
每個資料類型必須擁有在 Flows
區段中的相對應目的地。例如,若要將自訂日誌、ETW 日誌和系統日誌傳送到 CloudWatch Logs,請將 (CustomLogs,ETW,SystemEventLog),CloudWatchLogs
新增至 Flows
區段。
警告
加入無效的步驟會阻礙流程。例如,如果新增磁碟指標步驟,但執行個體沒有磁碟,則流程中的所有步驟都會遭到封鎖。
您可以將相同的日誌檔傳送到多個目的地。例如,如果要將應用程式日誌傳送到您在 CloudWatchLogs
區段中所定義的兩個不同目的地,請在 Flows
區段中加入 ApplicationEventLog,(CloudWatchLogs,CloudWatchLogs2)
。
設定流程控制
-
在
AWS.EC2.Windows.CloudWatch.json
檔案中,找到Flows
區段。"Flows": { "Flows": [ "PerformanceCounter,CloudWatch", "(PerformanceCounter,PerformanceCounter2), CloudWatch2", "(CustomLogs, ETW, SystemEventLog),CloudWatchLogs", "CustomLogs, CloudWatchLogs2", "ApplicationEventLog,(CloudWatchLogs, CloudWatchLogs2)" ] }
-
針對
Flows
,新增要上傳的每個資料類型 (例如,ApplicationEventLog
) 及其目的地 (例如,CloudWatchLogs
)。
您現在已經完成編輯 JSON 檔案。在後續步驟中會使用到此檔案。
啟動代理程式
若要讓執行 Windows Server 2012 或 Windows Server 2008 的 Amazon EC2 執行個體將日誌傳送到 CloudWatch Logs,請使用 EC2Config 服務 (EC2Config.exe)
。您的執行個體應該擁有 EC2Config 4.0 或更新版本,而且您可以使用此程序。
使用 EC2Config 4.x 來設定 CloudWatch
-
對您稍早在此程序中編輯的
AWS.EC2.Windows.CloudWatch.json
檔案檢查編碼。只支援無 BOM 的 UTF-8 編碼。接著,在 Windows Server 2008 – 2012 R2 執行個體的以下資料夾儲存檔案:C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\
。 -
使用 Windows 服務控制台,或使用下列 PowerShell 命令,以啟動或重新啟動 SSM Agent (
AmazonSSMAgent.exe
):PS C:\>
Restart-Service AmazonSSMAgent
SSM Agent 重新啟動之後會偵測組態檔案,並設定 CloudWatch 整合的執行個體。如果變更本機組態檔案中的參數與設定,您需要重新啟動 SSM Agent 來反映變更。若要停用執行個體上的 CloudWatch 整合,請將 IsEnabled
變更為 false
,並儲存組態檔案中的變更。