本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
快速入门:让您的运行 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 上的 Encoding 类主题。 注意
使用编码名称,而不是显示名称。
-
(可选)对于
Filter
,键入日志名称的前缀。将此参数保留空白以监控所有文件。有关支持的值的更多信息,请参阅 MSDN 上的 FileSystemWatcherFilter 属性主题。 -
(可选)对于
CultureName
,键入记录该时间戳的区域。如果CultureName
为空,则它默认为您 Windows 实例当前所使用的相同区域位置。有关支持的值的更多信息,请参阅 MSDN 上产品行为主题中表格的 Language tag
列。注意
不支持值
div
、div-MV
、hu
和hu-HU
。 -
(可选)对于
TimeZoneKind
,键入Local
或UTC
。可以设置此参数以在日志时间戳中不包含时区信息时提供时区信息。如果此参数留空且时间戳不包括时区信息,则 CloudWatch Logs 默认为本地时区。如果时间戳已包含时区信息,则忽略此参数。 -
(可选)对于
LineCount
,在标头中键入行数以识别日志文件。例如,IIS 日志文件拥有几乎相同的标头。您可以输入5
,系统会读取日志文件标头的前三行以进行识别。在 IIS 日志文件中,第三行为日期和时间戳,但无法始终保证时间戳在日志文件之间是不同的。为此,建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。
将 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 上的 Encoding 类主题。 注意
使用编码名称,而不是显示名称。
-
(可选)对于
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
部分中定义的两个不同目标,请将 ApplicationEventLog,(CloudWatchLogs,CloudWatchLogs2)
添加到 Flows
部分。
配置流程控制
-
在
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 的更多信息,请参阅《Amazon EC2 用户指南》中的使用 EC2Config 3.x 或更低版本配置 CloudWatch
使用 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
并保存在配置文件中所做的更改。