Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

配置与 CloudWatch 集成的初步任务

完成以下初步任务以配置与 CloudWatch 的集成。这些任务适用于配置实例以将日志、事件和性能计数器发送到 CloudWatch 的所有方法。

下载示例配置文件

将以下示例文件下载到您的计算机:AWS.EC2.Windows.CloudWatch.json

为 CloudWatch 配置 JSON 文件

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

重要

将不含 BOM 的 UTF-8 编码用于 CloudWatch.json 文件。如果您未这样做,CloudWatch 可能无法正确读取配置文件。

步骤 1:为 CloudWatch 配置设置

通过为 CloudWatch 指定凭证、区域和指标命名空间,您让实例能够将性能计数器数据发送到 CloudWatch。如果不想发送性能计数器数据,则可跳过此过程。如果要将同一性能计数器数据发送到其他位置,则可添加包含唯一 ID 的额外部分 (例如,“CloudWatch2”和“CloudWatch3”) 并为每个 ID 添加一个不同的区域。

配置设置以将性能计数器数据发送到 CloudWatch

  1. 在 JSON 文件中,请在文件底部附近找到 CloudWatch 部分。

    { "Id": "CloudWatch", "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "AccessKey": "", "SecretKey": "", "Region": "us-west-1", "NameSpace": "Windows/Default" } },
  2. (可选) 如果您使用的是具有本地凭证本地配置文件,请键入您的 AccessKey 访问密钥 ID 和 SecretKey 秘密访问密钥。

    重要

    如果您使用的是 Systems Manager Run Command 或 State Manager,请勿提供配置文件中的凭证,因为这些凭证可能在日志文件中公开,包括调试日志文件。您将使用 IAM 角色配置凭证。

  3. 对于 Region,键入要将日志数据发送到的区域 (例如 us-east-2)。虽然可以将性能计数器发送到与日志数据发送目标不同的区域,但是我们建议您将此参数设置为运行实例的区域。

  4. 对于 NameSpace,键入将写入性能计数器数据的指标命名空间。

接着,指定凭证、区域、日志组名称和日志流命名空间。这使实例能够将日志数据发送到 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. (可选) 如果您使用的是具有本地凭证本地配置文件,请键入您的 AccessKey 访问密钥 ID 和 SecretKey 秘密访问密钥。

    重要

    如果您使用的是 Systems Manager Run Command 或 State Manager,请勿提供配置文件中的凭证,因为这些凭证可能在日志文件中公开,包括调试日志文件。您将使用 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} 或它们的组合定义日志流名称。

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

您可将性能计数器、事件日志数据、Windows 事件跟踪 (ETW) 数据和其他日志数据发送到 Amazon CloudWatch Logs 和 Amazon CloudWatch Events。

配置发送到 CloudWatch 的性能计数器

  1. 找到 PerformanceCounter 部分。

    { "Id": "PerformanceCounter", "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "CategoryName": "Memory", "CounterName": "Available MBytes", "InstanceName": "", "MetricName": "AvailableMemory", "Unit": "Megabytes", "DimensionName": "", "DimensionValue": "" } },
  2. 可以选择性能监视器中提供的任何性能计数器。您可以选择不同类别作为指标上传到 CloudWatch,如 .NET CLR 数据、ASP.NET 应用程序、HTTP 服务、内存或进程和处理器。

    对于每个性能计数器,复制 PerformanceCounter 部分并更改 Id 参数其唯一 (例如“PerformanceCounter2”)根据需要更新其他参数。

  3. 对于 CategoryName,键入性能计数器类别。要查找可用的类别和计数器,请执行以下操作:

    1. 打开性能监视器。(要查找性能监视器,请右键单击“Start”菜单,选择“Search”,然后键入 perfmon。)

    2. 在导航窗格中,依次选择 Monitoring ToolsPerformance Monitor

    3. 在结果窗格中,选择绿色 + (加号) 按钮。类别和计数器会在 Add Counters 对话框中列出。

  4. 对于 CounterName,请键入性能计数器的名称。

  5. 对于 InstanceName,键入性能监视器的 Add Counters 对话框中值,可以是下列值之一:

    • 空白,如果所选对象没有实例。

    • 所选对象的单个实例。

    • _Total 将使用所有实例的汇总。

    请勿使用星号 (*) 标识所有实例,因为每个性能计数器组件仅支持一个指标。

  6. 对于 MetricName,键入您希望性能数据显示在哪个 CloudWatch 指标下方。

  7. 对于 Unit,键入适当的指标计量单位。可能的值如下所示:

    秒 | 微秒 | 毫秒 | 字节 | 千字节 | 兆字节 | 千兆字节 | 太兆字节 | 位 | 千位 | 兆位 | 千兆位 | 太兆位 | 百分比 | 计数 | 字节/秒 | 千字节/秒 | 兆字节/秒 | 千兆字节/秒 | 太兆字节/秒 | 位/秒 | 千位/秒 | 兆位/秒 | 千兆位/秒 | 太兆位/秒 | 计数/秒 | 无。

  8. (可选) 为 DimensionNameDimensionValue 键入维度名称和值,以便指定指标维度。这些参数在列出指标时提供另一个视图。您还可以对多个指标使用同一个维度,以便可以查看属于特定维度的所有指标。

注意

如果 SSM 代理或 CloudWatch 插件已停止,则性能计数器数据不再记录到 CloudWatch 中,此行为不同于自定义日志或 Windows 事件日志。自定义日志和 Windows 事件日志会保留性能计数器数据,并在 SSM 代理或 CloudWatch 插件可用时将其上传到 CloudWatch。

将 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": "", "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "LogName": "", "Levels": "7" } },
  2. 对于 Id,键入要上传的日志的名称 (例如 WindowsBackup)。

  3. 对于 LogName,请键入要上传的日志的名称。您可以按如下步骤找到日志的名称。

    1. 打开事件查看器。

    2. 在导航窗格中,选择 Applications and Services Logs

    3. 导航到该日志,然后选择 ActionsProperties

  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 实例当前所使用的相同区域位置。有关支持的值的列表,请参阅 Microsoft 文档中的区域语言支持 (NLS) API 参考

    注意

    不支持值 divdiv-MVhuhu-HU

  7. (可选) 对于 TimeZoneKind,键入 LocalUTC。可以设置此参数以在日志时间戳中不包含时区信息时提供时区信息。如果此参数留空且时间戳不包括时区信息,则 CloudWatch Logs 默认为本地时区。如果时间戳已包含时区信息,则忽略此参数。

  8. (可选) 对于 LineCount,在标头中键入行数以识别日志文件。例如,IIS 日志文件拥有几乎相同的标头。您可以输入 3,系统会读取日志文件标头的前三行以进行识别。在 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 上的区域语言支持 (NLS) API 参考主题。

    注意

    不支持值 divdiv-MVhuhu-HU

  7. (可选) 对于 TimeZoneKind,输入 LocalUTC。可以设置此参数以在日志时间戳中不包含时区信息时提供时区信息。如果此参数留空且时间戳不包括时区信息,则 CloudWatch Logs 默认为本地时区。如果时间戳已包含时区信息,则忽略此参数。

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

步骤 3:配置流程控制

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

警告

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

请注意,您可将同一性能计数器或日志文件发送到多个目标。例如,要将应用程序日志发送到您在 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)。

为 Systems Manager 创建 IAM 用户和角色

如果您打算使用具有本地凭证的本地配置文件,则可跳过此任务。

适用于实例凭证的 IAM 角色在您使用 Systems Manager Run Command 或 State Manager 时为必需,在您使用本地配置文件时为可选。此角色使 Systems Manager 能够对实例执行操作。您可以选择性地创建用于配置和运行 Systems Manager 的唯一 IAM 用户账户。有关更多信息,请参阅 AWS Systems Manager 用户指南 中的配置对 Systems Manager 的访问权限。有关如何将 IAM 角色附加到现有实例的信息,请参阅将 IAM 角色连接到实例

验证 Systems Manager 先决条件

如果您打算使用具有本地凭证的本地配置文件,则可跳过此任务。

在您使用 Systems Manager Run Command 或 State Manager 配置与 CloudWatch 的集成之前,请确认您的实例满足最低要求。有关更多信息,请参阅 AWS Systems Manager 用户指南 中的 Systems Manager 先决条件

验证 Internet 访问权限

您的 Amazon EC2 Windows Server 实例和托管实例必须具有出站 Internet 访问权限才能将日志和事件数据发送到 CloudWatch。有关如何配置 Internet 访问权限的更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关

下一步

完成用于配置与 CloudWatch 的集成的初步任务后,可以执行完成集成所需的过程。有关更多信息,请参阅 为 CloudWatch 配置实例