快速入门:让您的运行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 实例将日志发送到 CloudWatch Logs - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

快速入门:让您的运行 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
  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 上的 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 日志文件中,第三行为日期和时间戳,但无法始终保证时间戳在日志文件之间是不同的。为此,建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。

步骤 4:配置流程控制

每种数据类型在 Flows 部分中都必须具有对应的目标。例如,要将自定义日志、ETW 日志和系统日志发送到 CloudWatch Logs,请将 (CustomLogs,ETW,SystemEventLog),CloudWatchLogs 添加到 Flows 部分。

警告

添加无效的步骤将阻止流。例如,如果您添加了磁盘指标步骤,但实例没有磁盘,则流中的所有步骤都将被阻止。

您可将同一个日志文件发送到多个目标。例如,要将应用程序日志发送到您在 CloudWatchLogs 部分中定义的两个不同目标,请将 ApplicationEventLog,(CloudWatchLogs,CloudWatchLogs2) 添加到 Flows 部分。

配置流程控制
  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)。

现在,您已完成编辑 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
  1. 检查您在此过程前面编辑的 AWS.EC2.Windows.CloudWatch.json 文件的编码。只支持不含 BOM 的 UTF-8 编码。然后将文件保存在 Windows Server 2008 - 2012 R2 实例上的以下文件夹内:C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\

  2. 使用 Windows 服务控制面板或者使用以下 PowerShell 命令,来启动或重新启动 SSM Agent (AmazonSSMAgent.exe):

    PS C:\> Restart-Service AmazonSSMAgent

在重新启动 SSM Agent 后,代理会检测配置文件并且为 CloudWatch 集成配置实例。如果您更改本地配置文件中的参数和设置,则必须重新启动 SSM Agent 来使更改生效。如果希望在实例上禁用 CloudWatch 集成,请将 IsEnabled 更改为 false 并保存在配置文件中所做的更改。