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

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

快速入门:允许运行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 实例向日志发送 CloudWatch 日志

提示

CloudWatch 包括一个新的统一代理,可以从 EC2 实例和本地服务器收集日志和指标。我们建议您使用较新的统一 CloudWatch 代理。有关更多信息,请参阅 CloudWatch 日志入门

本节的其余部分将介绍使用较旧的 CloudWatch Logs 代理。

允许运行 Windows Server 2012 和 Windows Server 2008 的 Amazon EC2 实例向日志发送 CloudWatch 日志

使用以下步骤使运行 Windows Server 2012 和 Windows Server 2008 的实例能够将日志发送到 CloudWatch 日志。

下载示例配置文件

将以下示例 JSON 文件下载到您的计算机:AWS.EC2.Windows.CloudWatch.json。您将在后续步骤中编辑该文件。

配置 JSON 文件用于 CloudWatch

您可以 CloudWatch 通过在 JSON 配置文件中指定您的选择来确定要发送到哪些日志。创建此文件并指定您的选择的过程可能需要 30 分钟或更长时间才能完成。完成此任务一次后,您可以在所有实例上重复使用此配置文件。

步骤 1:启用 CloudWatch 日志

在 JSON 文件的顶部,将 IsEnabled 的“false”改为“true”:

"IsEnabled": true,

步骤 2:配置以下各项的设置 CloudWatch

指定凭证、区域、日志组名称和日志流命名空间。这使实例能够将日志数据发送到 Lo CloudWatch gs。要将相同的日志数据发送到不同的位置,您可以为每个 ID 添加具有唯一 ID(例如 “CloudWatchLogs2” 和 CloudWatchLogs “3”)以及不同区域的其他部分。

配置设置以将日志数据发送到 CloudWatch 日志
  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屏幕上。

  5. 对于 LogStream,键入目标日志流。此名称显示在 CloudWatch 控制台的 “日志组” > “流” 屏幕上。

    如果使用 {instance_id},则在默认情况下,日志流名称是该实例的实例 ID。

    如果您指定的日志流名称尚不存在,Lo CloudWatch gs 会自动为您创建该名称。您可以使用文字字符串、预定义变量 {instance_id}{hostname}{ip_address} 或它们的组合定义日志流名称。

步骤 3:配置要发送的数据

您可以将事件日志数据、Windows 事件跟踪 (ETW) 数据和其他日志数据发送到 CloudWatch 日志。

将 Windows 应用程序事件日志数据发送到 CloudWatch 日志
  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 日志
  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 日志
  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 日志
  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 日志

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 日志” 默认为本地时区。如果时间戳已包含时区信息,则忽略此参数。

  8. (可选)对于 LineCount,在标头中键入行数以识别日志文件。例如,IIS 日志文件拥有几乎相同的标头。您可以输入 5,系统会读取日志文件标头的前三行以进行识别。在 IIS 日志文件中,第三行为日期和时间戳,但无法始终保证时间戳在日志文件之间是不同的。为此,建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。

将 IIS 日志数据发送到 CloudWatch 日志
  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 日志” 默认为本地时区。如果时间戳已包含时区信息,则忽略此参数。

  8. (可选)对于 LineCount,在标头中键入行数以识别日志文件。例如,IIS 日志文件拥有几乎相同的标头。您可以输入 5,系统会读取日志文件标头的前五行以进行识别。在 IIS 日志文件中,第三行为日期和时间戳,但无法始终保证时间戳在日志文件之间是不同的。为此,建议包含至少一行实际日志数据以便对日志文件进行唯一指纹识别。

步骤 4:配置流程控制

每种数据类型在 Flows 部分中都必须具有对应的目标。例如,要将自定义日志、ETW 日志和系统日志发送到 CloudWatch 日志,请(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 日志,请使用 ec2Config 服务(。EC2Config.exe)您的实例应具有 EC2Config 4.0 或更高版本并且您可以使用此过程。有关使用早期版本的 EC2Config 的更多信息,请参阅《适用于 Windows 实例的 CloudWatch亚马逊 EC2 用户指南》中的 “使用 ec2Config 3.x 或更早版本进行配置

CloudWatch 使用 ec2Config 4.x 进行配置
  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 代理 (AmazonSSMAgent.exe):

    PS C:\> Restart-Service AmazonSSMAgent

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