实战案例 | 使用 Amazon CloudWatch 监控支出


  项目需求

某企业使用 AWS 构建了包含 EC2、RDS、S3 等服务的业务系统,随着业务扩展,月度云支出呈现波动趋势。为避免成本超支,企业需要实现以下目标:实时监控各 AWS 服务的支出情况,识别异常消耗(如未关闭的测试实例、数据传输突发流量)。设置预算告警,当月度支出接近预设阈值(如预算的 80%)时,自动通知运维团队。生成可视化报表,按服务、区域、账户等维度分析成本分布,辅助长期优化决策。

  解决方案

采用 Amazon CloudWatch 结合 AWS Cost and Usage Report (CUR) 实现支出监控。
数据源:启用 AWS CUR 生成详细的成本数据文件,存储至 S3 桶供 CloudWatch 分析。
监控指标:通过 CloudWatch 创建自定义指标(如 EstimatedCharges),或直接使用 AWS 预置的成本指标(如 BudgetAmount、ForecastedCharges)。
告警机制:在 CloudWatch Alarms 中设置阈值,触发告警时通过 Amazon SNS 发送邮件/短信通知。
可视化看板:使用 CloudWatch Dashboards 构建实时成本仪表盘,集成 AWS Cost Explorer 数据增强分析能力。

  作业步骤

本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。

步骤一:启用 AWS Cost and Usage Report
登录 AWS 管理控制台,进入 Billing and Cost Management > Cost and Usage Reports。
点击 Create report,指定报告名称(如 cloudwatch-cost-report),选择 S3 存储桶(需提前创建),并勾选 Include resource IDs 以获取详细资源级数据。
在 Report data columns 中选择 LINE_ITEM、PRODUCT、PRICING 等关键字段,提交后等待数据生成(通常需 24 小时)。

步骤二:配置 CloudWatch 成本指标
进入 CloudWatch > Metrics > All metrics,搜索 AWS/Billing 命名空间。
选择 EstimatedCharges 指标,按 Currency 和 LinkedAccount 维度筛选数据,点击 Create dashboard 添加到仪表盘。

步骤三:创建预算告警
进入 CloudWatch > Alarms > Create alarm,选择 AWS/Billing > EstimatedCharges 指标。
设置条件:When EstimatedCharges is > 800 USD for at least 1 consecutive period of 1 Hour(假设月度预算为 1000 USD)。
配置告警动作:选择现有 SNS 主题或创建新主题,输入接收通知的邮箱/手机号。

步骤四:构建成本仪表盘
在 CloudWatch Dashboards 中创建新看板,添加以下小部件:
数值图:显示当前月度支出(EstimatedCharges)。
折线图:对比历史支出趋势(按天聚合)。
表格图:按服务类型(EC2、RDS 等)拆分成本占比。

  结果验证

1. 数据准确性验证
登录 AWS Cost Explorer,对比 CloudWatch 仪表盘中的支出数据与 Cost Explorer 的“Total cost”是否一致,确认 CUR 数据已正确导入。
2. 告警触发测试
手动调整 EC2 实例规格或启动额外实例,模拟支出增加场景。
观察 CloudWatch Alarms 状态是否变为 ALARM,并检查邮箱/短信是否收到通知。
3. 仪表盘可用性验证
分享仪表盘链接给团队成员,确认不同角色(如财务、运维)能通过筛选器(如 Region、Service)快速获取所需成本视图。