通过 AWS Systems Manager 为 Windows Server Amazon EC2 实例启用 CloudWatch 内存指标监控
在本篇教程中,我们将展示如何通过 AWS Systems Manager 自动化来减轻对 Windows Server EC2 实例启用 Amazon CloudWatch 内存指标监控的管理负担。启用内存监控后,我们还将展示内存监控如何惠及下游服务(比如 AWS Compute Optimizer),从而为您提供准确的成本节省建议。



监控是维护 Amazon Elastic Compute Cloud (Amazon EC2) 实例和亚马逊云科技解决方案的可靠性、可用性和性能的重要内容。CloudWatch 能够以近实时的方式监控您在亚马逊云科技上运行的工作负载。CloudWatch 让您能够收集和跟踪资源和应用程序的测量指标。默认情况下,CloudWatch 可监控 Amazon EC2 的CPU、存储和网络等系统指标。有关 CloudWatch 指标的完整列表,请参阅文档您的实例可用的 CloudWatch 指标列表。
内存指标对于系统监控至关重要,尤其是内存密集型 Microsoft 应用程序(如 SQL Server 和 Exchange Server)。此外,通过在 EC2 实例上部署 Amazon CloudWatch 代理并收集内存占用率指标,客户可沿用 AWS Compute Optimizer 的建议,平均节省高达 327% 的成本。要为 CloudWatch 启用内存指标监控,需要部署 CloudWatch 代理并自定义额外的指标配置。
解决方案概述
在本文中,我们利用 AWS CloudFormation 模板来执行以下操作:
1. 设定 AWS Identity and Access Management (IAM) role 角色,以允许 Systems Manager 运行 Systems Manager Automation runbook。
为了让 Systems Manager 对 Amazon EC2 实例执行操作,Systems Manager 必须获得适当的权限。IAM 角色可用于执行此类操作。CloudFormation 模板使用了 AmazonSSMAutomationRole 角色(由亚马逊云科技管理的默认角色)。
2. 配置 CloudWatch 代理以收集内存指标。
CloudWatch 代理用于收集 Amazon EC2 实例的指标,再报告给 CloudWatch 服务。在任何服务器上运行 CloudWatch 代理之前,必须创建至少一个 CloudWatch 代理配置文件。代理配置文件是一个 JSON 文件,用于指定代理需要收集的指标、日志和跟踪信息,其中包括自定义指标。
CloudFormation 模板在 Parameter Store 中创建了 CloudWatch 代理配置文件。Parameter Store 是 Systems Manager 的一个功能,为配置数据管理和密钥管理提供安全、层次化的存储。其配置指定了需要从 Windows Server EC2 实例中捕获的 Windows Server 性能指标--“可用内存 (MB)”和“已用内存百分比”。
- “可用内存(MB)”是 Windows 中的一个性能计数器,用于反映可用于分配给进程或操作系统的物理内存量(RAM)。它代表当前尚未使用且可根据请求分配给新进程或现有进程的内存池。
- “已用内存百分比”是 Windows 中的一个性能计数器,用于测量当前由进程和操作系统本身使用的虚拟内存量。这对于 SQL Server 这样的工作负载非常重要,因为它有助于识别潜在的内存压力或过度使用内存的情况,这些情况可能会影响系统的整体性能。
Linux 操作系统使用的内存性能指标有所不同,此配置仅适用于 Windows Server。如果您需要为 Amazon EC2 Linux 实例部署 CloudWatch 代理并启用内存指标,请参阅通过 AWS Systems Manager 为 Amazon EC2 实例设置内存指标。
所有自定义 CloudWatch 指标的费用均按小时计费,并仅在将指标发送至 CloudWatch 时开始计费。如需了解更多定价信息,请访问 CloudWatch 定价页面。
3. 创建一个自动化运行手册,以安装和配置 Amazon CloudWatch 代理。
自动化运行手册定义了 Systems Manager 在您的托管实例上执行的操作。利用CloudFormation 模板创建自动化运行手册,以执行以下操作:
- 将亚马逊云科技托管策略 CloudWatchAgentServerPolicy 添加到 IAM 实例配置文件。
- 安装 CloudWatch 代理。
- 应用 CloudWatch 代理内存指标配置(步骤 2)。
4. 运行 Systems Manager 关联,以指定所有向 Systems Manager 发送报告的 Windows Server Amazon EC2实例。
最后一步是建立 Systems Manager 关联,指定 Systems Manager 自动化运行手册的目标和计划。设置 CloudFormation 模板,使其指向在 Systems Manager Fleet Manager 中作为托管节点进行报告的所有实例。
先决条件
CloudFormation 模板仅适用于向 Systems Manager 发送报告的 Windows Server Amazon EC2 实例。验证您想要部署 CloudWatch 代理的所有服务器是否全部在线,并作为托管节点在 AWS Systems Manager Fleet Manager 中显示。关于如何为 Amazon EC2 实例设置 Systems Manager,请参阅 为 EC2 实例设置 Systems Manager。
操作步骤
部署 CloudFormation 堆栈
1. 下载 CloudFormation 文件 mem-metrics-windows.yml。
2. 在 AWS Management Console 中打开 CloudFormation 控制台。
3. 在导航窗格中,点击“堆栈”。
4. 点击右上角“创建堆栈”,再选择“使用现有资源(导入资源)”,点击“下一步”。
5. 关于“模板资源”,点击“上传模板文件”。
6. 点击“选择文件”,上传 mem-metrics-windows.yml 文件,点击“下一步”。
7. 在“识别资源”页面,点击“下一步”。
8. 在“指定堆栈详细信息”页面,在“堆栈名称”中输入堆栈名称,再点击“下一步”。
9. 检查堆栈,再点击“导入资源”。
验证关联
- 堆栈部署完毕后,点击“资源”选项卡。
- 复制资源类型 AWS::SSM::Association 的“物理 ID”(图 1)。

图 1: CloudFormation – 查找 Systems Manager Association 的物理 ID
3. 打开 Systems Manager 控制台。
4. 在导航窗格中,点击“节点管理”下的“状态管理器”。
5. 在“关联”页面,选择与您从堆栈资源中复制的物理 ID 相匹配的关联 ID。
6. 筛选关联,点击“关联 ID”,粘贴您的堆栈资源物理 ID(图 2)。

图 2: Systems Manager – 通过筛选物理 ID 查找关联 ID。
7. 选择“执行历史记录”。
8. 点击“执行 ID” 将显示执行目标(Amazon EC2 实例)(图3)。

图 3: Systems Manager – 检查关联的执行目标
(可选)验证 Windows Server 上 CloudWatch 代理的安装
1. 登录到您的 Windows Server Amazon EC2 实例。
2. 打开事件查看器 (eventvwr.msc)。
3. 在“Windows日志”下,点击“应用程序”。
4. 查看“事件 ID 1040”,检查 CloudWatch 代理是否开始安装(图 4)。

图 4: Windows Server 事件日志 – 开始安装 CloudWatch 代理
5. 查看“事件 ID 1033”,检查 CloudWatch 代理是否安装成功(图 5)。

图 5: Windows Server 事件日志 – CloudWatch代理安装成功
验证能否向 CloudWatch 发送内存指标报告。
1. 打开 CloudWatch 控制台。
2. 在导航窗格中,查看“指标”,再点击“所有指标”。
3. 在“浏览”选项卡中,点击“自定义命名空间”下的“CWAgent”。
4. 点击“InstanceId”。
5. 通过“InstanceId”找到您的实例。
6. 验证“已用内存百分比”和“可用内存”指标(图 6)。

图 6: CloudWatch – 验证内存指标
查看 AWS Compute Optimizer 建议。
AWS Compute Optimizer 是一项通过分析亚马逊云科技资源配置和使用情况指标,从而为您提供资源规模优化建议的服务。它会报告您的资源是否达到最优状态,并生成优化建议,以降低您的成本并提高工作负载的性能。
启用 CloudWatch 内存监控的一个主要好处是, Compute Optimizer 可根据内存使用情况提供 Amazon EC2 建议。倘若不使用 CloudWatch 代理,Compute Optimizer 将无法获取内存指标,仅会根据 CPU、存储和网络使用情况提供建议。
1. 打开 Compute Optimizer 控制台。
2. 在导航窗格中,点击“EC2 实例”。
3. 通过“InstanceId”选择一个 EC2 实例。
4. 在比较建议时验证内存占用率(图 7)。

图 7:Compute Optimizer – 验证内存占用率
注意:Compute Optimizer 可能需要长达 30 个小时才能开始提供建议。
清理
部署此解决方案将配置亚马逊云科技资源并产生费用。一旦您完成测试且无需再收集新实例的指标,即可删除在本示例中创建的 AWS CloudFormation 堆栈,以移除已配置的资源。导航至 CloudFormation 控制台,点击您创建的堆栈。点击“删除”,在弹出提示框时点击“确认”。如需卸载统一的 CloudWatch 代理,请按照卸载软件包的步骤进行操作,并选择 AmazonCloudWatchAgent 包名。再从 IAM 实例配置文件中移除 CloudWatchAgentServerPolicy,请按照 移除 IAM 身份权限(控制台) 的步骤进行操作。
总结
在本教程中,我们学习了如何使用 AWS Systems Manager 在 Windows Server EC2 实例上配置 CloudWatch 内存指标。我们还回顾了内存指标监控如何通过提高 AWS Compute Optimizer 建议的准确性来帮助节省成本。
与其他云服务厂商相比,亚马逊云科技提供了无与伦比的多样化服务和功能。因此,将现有应用程序迁移到云中并构建可以想见的几乎任何内容,将变得更加快速、更加简单、更具成本效益。亚马逊云科技可为您的 Microsoft 应用程序提供所需的基础设施,实现您期望的业务成果。