本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
快速入門:啟用執行 Windows 伺服器 2012 和視窗伺服器 2008 的 Amazon EC2 執行個體,將日誌傳送到 CloudWatch 日誌
提示
CloudWatch 包含新的統一代理程式,可從 EC2 執行個體和現場部署伺服器收集日誌和指標。我們建議您使用較新的統一 CloudWatch 代理程式。如需詳細資訊,請參閱 開始使用 CloudWatch 記錄。
本節的其餘部分將說明舊版 CloudWatch Logs 代理程式的使用。
讓執行視窗伺服器 2012 和視窗伺服器 2008 的 Amazon EC2 執行個體能夠將日誌傳送到 CloudWatch 日誌
請使用下列步驟來啟用執行 Windows 伺服器 2012 和視窗伺服器 2008 的執行個體,將記錄檔傳送至 CloudWatch 記錄檔。
下載範例組態檔案
將以下範例 JSON 檔案下載到您的電腦:AWS.EC2.Windows.CloudWatch.json
設定下列項目的 JSON 檔案 CloudWatch
您可以在 JSON 組態檔中指定您的選擇,以決定要傳送到 CloudWatch 哪些記錄。建立此檔案並指定選擇的程序。需要 30 分鐘或更久的時間完成。一旦完成此工作,您就可以在所有的執行個體上重複使用該組態檔案。
步驟 1:啟用 CloudWatch 記錄
在 JSON 檔案頂部,針對 IsEnabled
將「false」變更為「true」。
"IsEnabled": true,
步驟 2:設定 CloudWatch
指定憑證、區域、日誌群組名稱和日誌串流命名空間。這可讓執行個體將記錄資料傳送至 CloudWatch 記錄檔。若要將相同的記錄資料傳送至不同的位置,您可以新增具有唯一 ID 的其他區段 (例如,"CloudWatchLogs2" 和 CloudWatchLogs 3"),以及每個 ID 的不同區域。
設定將記錄檔資料傳送至 CloudWatch 記錄檔的設定
-
在 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
,輸入您日誌群組的名稱。此名稱會在 主控台的 Log Groups CloudWatch (登入群組) 畫面上出現。 -
針對
LogStream
,輸入目的地日誌串流。此名稱會出現在 CloudWatch 主控台的「記錄群組 > 串流」畫面上。若使用
{instance_id}
(預設值),日誌串流名稱則為此執行個體的執行個體 ID。如果您指定的記錄資料流名稱不存在, CloudWatch Logs 會自動為您建立該名稱。您可以使用常值字串、預先定義的變數
{instance_id}
、{hostname}
和{ip_address}
,或是組合這些項目,來定義日誌串流名稱。
步驟 3:設定要傳送的資料
您可以將事件記錄檔資料、Windows 事件追蹤 (ETW) 資料,以及其他記錄檔資料傳送至 CloudWatch 記錄檔。
將 Windows 應用程式事件記錄檔資料傳送至 CloudWatch 記錄檔
-
在 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 記錄檔
-
在 JSON 檔案中,找到
SecurityEventLog
區段。{ "Id": "SecurityEventLog", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "Security", "Levels": "7" } },
-
針對
Levels
,輸入7
以上傳所有訊息。
將系統事件記錄檔資料傳送至 CloudWatch 記錄檔
-
在 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 記錄檔
-
在 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 記錄檔
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 記錄
-
在 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 記錄會預設為當地時區。如果您的時間戳記已包含時區資訊,則會忽略此參數。 -
(選用) 針對
LineCount
,輸入標頭中的行數,以辨識日誌檔案。例如,IIS 日誌檔幾乎都具有相同的標頭。您可以輸入5
,這會讀取日誌檔標頭的前三行來進行辨識。在 IIS 日誌檔中,第三行是日期和時間戳記,但不保證時間戳記在日誌檔間總是不同的。因此,我們建議包括至少一行實際的日誌資料,做為用來唯一辨識日誌檔的指紋。
若要將 IIS 記錄檔資料傳送至 CloudWatch 記錄
-
在 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 記錄會預設為當地時區。如果您的時間戳記已包含時區資訊,則會忽略此參數。 -
(選用) 針對
LineCount
,輸入標頭中的行數,以辨識日誌檔案。例如,IIS 日誌檔幾乎都具有相同的標頭。您可以輸入5
,這會讀取日誌檔標頭的前五行來進行辨識。在 IIS 日誌檔中,第三行是日期和時間戳記,但不保證時間戳記在日誌檔間總是不同的。因此,我們建議包括至少一行實際的日誌資料,以唯一辨識日誌檔的指紋。
步驟 4:設定流程控制
每個資料類型必須擁有在 Flows
區段中的相對應目的地。例如,若要將自訂記錄檔、ETW 記錄和系統記錄檔傳送至 CloudWatch 記錄,請新增(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 檔案。在後續步驟中會使用到此檔案。
啟動代理程式
若要啟用執行視窗伺服器 2012 或 Windows 伺服器 2008 的 Amazon EC2 執行個體將日誌傳送到 CloudWatch 日誌,請使用 EC2Config 服務 (. EC2Config.exe)
您的執行個體應該擁有 EC2Config 4.0 或更新版本,而且您可以使用此程序。如需有關使用舊版 EC2Config 的詳細資訊,請參閱 CloudWatch在 Amazon EC2 使用者指南中的 Windows 執行個體使用者指南中的使用 EC2Config 3.x 或更早版本進行設定。
若要 CloudWatch 使用 EC2Config 4.x 進行配置
-
對您稍早在此程序中編輯的
AWS.EC2.Windows.CloudWatch.json
檔案檢查編碼。只支援無 BOM 的 UTF-8 編碼。接著,在 Windows Server 2008 – 2012 R2 執行個體的以下資料夾儲存檔案:C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\
。 -
使用 Windows 服務控制台或使用下列 PowerShell 命令來啟動或重新啟動 SSM 代理程式 (
AmazonSSMAgent.exe
):PS C:\>
Restart-Service AmazonSSMAgent
SSM 代理程式重新啟動之後,它會偵測組態檔並設定執行個體以進行整合。 CloudWatch 如果變更本機組態檔案中的參數與設定,您需要重新啟動 SSM Agent 來反映變更。若要停用執行個體的 CloudWatch 整合,請在組態檔案中變更IsEnabled
false
並儲存您的變更。