AWS CloudWatch 监控告警实战:从零为 EC2/RDS/Lambda 搭建监控告警体系(2026最新教程)

📅 · AWS 国际版实战教程 - ChengziCloud

一句话结论

Meta Description: AWS CloudWatch 监控告警完整教程:EC2/RDS/Lambda 关键指标监控、CPU 高负载自动告警、CloudWatch 费用真相与免费额度、AWS CLI 一键建告警,附价格对比表与 FAQ。

本文要点
  • 前言
  • CloudWatch 是什么:一张表看懂监控全家桶
  • 费用真相:CloudWatch 哪些免费、哪些悄悄收费
  • 实操一:为 EC2 添加 CPU 高负载告警(15 分钟)
  • 实操二:采集内存/磁盘指标(CloudWatch Agent 安装)
  • 实操三:RDS 与 Lambda 监控告警
  • 实操四:CloudWatch Logs 集中收集应用日志
  • 方案对比:轻量用户 / 团队 / 企业怎么配

Meta Description: AWS CloudWatch 监控告警完整教程:EC2/RDS/Lambda 关键指标监控、CPU 高负载自动告警、CloudWatch 费用真相与免费额度、AWS CLI 一键建告警,附价格对比表与 FAQ。

关键词:AWS CloudWatch、CloudWatch 告警、EC2 监控、RDS 监控、Lambda 监控、CloudWatch 费用、SNS 告警通知

前言

答案是:CloudWatch 是 AWS 官方自带的监控全家桶,EC2 开箱即用 5 分钟就能配上 CPU 告警,RDS 和 Lambda 的指标全部免费,只有日志和自定义指标才收费——新手按本文的"免费额度内配置法"操作,前 12 个月基本 0 成本。决策口诀:指标用 CloudWatch 原生免费项,告警只建关键的 3~5 条,日志按量精打细算,千万别开全量详细监控。

很多用户上云后第一年没出问题,第二年突然收到一张几百美金的账单,其中很大一部分来自 CloudWatch:EC2 详细监控、海量自定义指标、日志无限量摄入。本文从零开始,带你用最少的花费搭出一套"服务器挂了 10 分钟就收到邮件"的监控体系,并给出价格对比表和避坑清单。

一、CloudWatch 是什么:一张表看懂监控全家桶

CloudWatch 由四块核心能力组成:指标(Metrics)、日志(Logs)、告警(Alarms)、仪表盘(Dashboards)。EC2、RDS、Lambda 等几乎所有 AWS 服务都会自动上报基础指标,不需要装任何东西。

组件作用典型用途是否免费
CloudWatch Metrics收集服务指标EC2 CPU/网络、RDS 连接数EC2/RDS/Lambda 基础指标免费
CloudWatch Alarms指标超阈值触发通知CPU>80% 连续 10 分钟告警免费 10 条告警/月
CloudWatch Logs集中存应用日志nginx/Java/Python 日志检索免费 5GB 摄入/月
CloudWatch Dashboards可视化面板一屏看全站健康状态免费 3 个面板
CloudWatch Agent采集内存/磁盘指标装到 EC2 上采集 mem/diskAgent 免费,指标按条计费
SNS告警通知通道邮件/短信/钉钉回调免费 100 万次请求/月

关键认知:EC2 默认的 5 分钟粒度基础监控(CPUUtilization、NetworkIn/Out、DiskRead/Write、StatusCheck)完全免费,这些够 90% 的新手使用。只有内存、磁盘使用率这类"实例内部"指标需要装 CloudWatch Agent 才能采到。

二、费用真相:CloudWatch 哪些免费、哪些悄悄收费

CloudWatch 免费套餐(所有账号通用,12 个月有效):

  • 10 个自定义指标、10 个告警(标准分辨率)
  • 1,000,000 次 API 请求/月(GetMetricData 等)
  • 5GB 日志摄入 + 5GB 归档/月
  • 3 个仪表盘,每个最多 50 个指标

超出后的主要收费项(按 2026 年参考价,随区域浮动):

收费项参考价容易踩的坑
EC2 详细监控(1 分钟粒度)约 $3.5/实例/月控制台勾选后自动开启,几十台实例就是大几十刀
自定义指标约 $0.30/指标/月CloudWatch Agent 每台实例默认上报 30+ 指标
告警约 $0.10/条/月数量多了也是钱,留 10 条以内
日志摄入约 $0.50/GB/月应用打日志不控制,一个月几百 GB 很正常
日志存储约 $0.03/GB/月按量累积,建议设 7 天保留期
仪表盘约 $3/个/月超过 3 个才收费
GetMetricData API约 $0.01/千次脚本轮询太频繁会收费

省钱的三个铁律:① 不要开启 EC2 详细监控,5 分钟粒度配合 2 个周期评估足够;② CloudWatch Agent 只采集 3~5 个必要指标(mem_used_percent、disk_used_percent),别用默认全量配置;③ 日志保留期设 7 天(aws logs put-retention-policy),不设默认永久保存。

三、实操一:为 EC2 添加 CPU 高负载告警(15 分钟)

控制台方式(最简单):

  1. 打开 EC2 控制台 → 选中实例 → 底部"监控"标签页,确认能看到 CPUUtilization 图表(免费指标,无需任何配置)
  2. 左侧菜单进入 CloudWatch → 告警 → 所有告警 → 点"创建告警"
  3. 选择指标 → 命名空间 AWS/EC2 → 指标名称 CPUUtilization → 勾选你的实例 ID → 选择"平均"
  4. 条件设置:大于 80%,连续 2 个数据点(每个 5 分钟,即持续 10 分钟高负载才触发,避免误报)
  5. 通知:新建 SNS 主题 → 添加邮件订阅 → 确认订阅邮件
  6. 告警名称 ec2-cpu-high → 创建

先建 SNS 通知主题(只需要一次,后面所有告警复用):


// 创建主题并订阅你的邮箱,然后去邮箱点确认链接
aws sns create-topic --name my-alerts
aws sns subscribe --topic-arn arn:aws:sns:ap-northeast-1:123456789012:my-alerts \
  --protocol email --notification-endpoint [email protected]

CLI 一键创建 CPU 告警(推荐,可写进脚本批量部署):


aws cloudwatch put-metric-alarm \
  --alarm-name ec2-cpu-high \
  --alarm-description "CPU average > 80% for 10 minutes" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --alarm-actions arn:aws:sns:ap-northeast-1:123456789012:my-alerts

四、实操二:采集内存/磁盘指标(CloudWatch Agent 安装)

EC2 默认指标不含内存使用率,需要安装 CloudWatch Agent。以 Amazon Linux 2 为例:


// 1. 安装 agent(Ubuntu 用 apt 安装 amazon-cloudwatch-agent 或下载 deb 包)
sudo yum install -y amazon-cloudwatch-agent

// 2. 启动配置向导,按提示只勾选 memory 和 disk 指标,单位选 percent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

// 3. 启动并设为开机自启
sudo systemctl start amazon-cloudwatch-agent
sudo systemctl enable amazon-cloudwatch-agent

装好后指标会出现在命名空间 CWAgent 下:mem_used_percent、disk_used_percent。注意:CWAgent 的指标属于"自定义指标",免费额度内只有 10 个,务必用向导只勾选需要的项,否则每台实例每月多出约 $10 的指标费。

然后照第三节的流程创建内存告警(命名空间选 CWAgent,指标 mem_used_percent,阈值 85%)。这一步做完,你的服务器"CPU 打满"和"内存耗尽"都会自动发邮件。

五、实操三:RDS 与 Lambda 监控告警

RDS 数据库最该盯的 4 个指标:CPUUtilization(CPU 打满)、DatabaseConnections(连接数接近 max_connections 说明连接泄漏)、FreeStorageSpace(磁盘快满)、ReadLatency/WriteLatency(慢查询)。创建告警时命名空间选 AWS/RDS,维度选 DBInstanceIdentifier。


// 磁盘剩余低于 2GB 告警
aws cloudwatch put-metric-alarm \
  --alarm-name rds-storage-low \
  --metric-name FreeStorageSpace \
  --namespace AWS/RDS \
  --statistic Minimum --period 300 --evaluation-periods 2 \
  --threshold 2000000000 --comparison-operator LessThanThreshold \
  --dimensions Name=DBInstanceIdentifier,Value=mydb \
  --alarm-actions arn:aws:sns:ap-northeast-1:123456789012:my-alerts

Lambda 函数:Errors(错误次数)、Duration(执行耗时)、Throttles(限流次数)三个指标全部免费自动上报。控制台 → CloudWatch → 告警 → 创建告警 → 命名空间 AWS/Lambda → 选函数名和 Errors,阈值设 0、大于、1 个周期——只要函数报错就立刻收到通知,排查线上问题效率翻倍。

六、实操四:CloudWatch Logs 集中收集应用日志

把服务器日志接入 CloudWatch Logs,就不用再 ssh 上服务器 tail 了:


// 把 nginx 访问日志实时送入 CloudWatch Logs
aws logs put-log-events \
  --log-group-name /nginx/access \
  --log-stream-name web-01 \
  --log-events timestamp=1700000000000,message="192.168.1.1 GET / 200"

生产环境更常用的做法是装 CloudWatch Agent 后,在 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 里配置 logs 段,指定日志文件路径和 log group 名称,Agent 会自动采集。三个省钱设置:保留期设 7 天(aws logs put-retention-policy --log-group-name /nginx/access --retention-in-days 7)、按 log group 区分应用(查问题好定位)、只收应用日志不收系统无关日志(每 GB 0.5 美金,量大惊人)。

七、方案对比:轻量用户 / 团队 / 企业怎么配

方案适用对象监控范围月成本参考配置要点
轻量版个人项目、博客、小站EC2 CPU + 状态检查 + 免费额度内 3 条告警$0只用原生指标,不装 Agent,SNS 邮件通知
标准版团队线上业务EC2 CPU/内存 + RDS + Lambda + 日志 7 天$5~20装 Agent 但只采 5 个指标,告警 10 条内
企业版多账号/高可用要求全链路指标 + 日志全文检索 + 自定义仪表盘 + 详细监控$50+配合 CloudTrail、事件告警,按团队拆分 SNS 主题

个人和小团队强烈建议从"轻量版"起步:EC2 原生 CPU 告警 + RDS 磁盘告警 + Lambda 错误告警,三张王牌全部落在免费额度里,等业务真需要了再升级,避免"监控比服务器还贵"的尴尬。

八、五个新手最容易踩的 CloudWatch 坑

  1. 误开 EC2 详细监控:创建实例时勾了"详细监控",每月每台多 $3.5,几十台就是三位数账单。检查方法:EC2 控制台看实例,监控列显示"启用"即已开启,到 CloudWatch 设置里关掉。
  2. 告警没配 SNS 或没确认邮件:创建告警后忘了去邮箱点 SNS 订阅确认链接,告警"已触发"但你永远收不到邮件——这是最常见的假告警故障。
  3. CloudWatch Agent 默认全量指标:向导一路回车,每台实例上报 30+ 自定义指标,轻松冲破 10 个免费额度。
  4. 日志无限量摄入:应用日志带 debug 级别且不轮转,一个月几百 GB,账单 $150+。务必设保留期 + 日志级别过滤。
  5. 告警阈值设置过低:CPU 大于 30% 就告警,一天收 50 封邮件,最后把通知静音了,真正出事时反而没人看。阈值按"持续 2 个周期 + 明显异常"来设。

九、常见问题 FAQ

Q: CloudWatch 免费吗? A: 免费套餐内:10 个自定义指标、10 个告警、5GB 日志摄入、3 个仪表盘。EC2/RDS/Lambda 的基础指标本身永久免费,超出免费额度才按量计费。

Q: EC2 监控显示的内存指标在哪里看? A: EC2 默认不采集内存,需要安装 CloudWatch Agent 后到命名空间 CWAgent 下查看 mem_used_percent。

Q: 告警触发了为什么没收到邮件? A: 三个原因按顺序排查:① SNS 订阅邮件没点确认链接;② 告警的 alarm-actions 没绑定 SNS 主题;③ 邮件进了垃圾箱。

Q: 可以监控多台实例吗? A: 可以,每台实例创建一条告警即可(维度 InstanceId 不同);更优雅的做法是用 Auto Scaling 组的维度统一建一条告警,覆盖组内所有实例。

Q: CloudWatch 和第三方监控(Zabbix/Prometheus)怎么选? A: 单账号、AWS 原生服务为主选 CloudWatch,零运维;多云或需要自定义采集就用 Prometheus/Grafana;Zabbix 适合已有传统机房监控体系的团队。

总结

监控的本质是"在故障影响用户之前先通知到你"。按本文路线:免费额度内建好 EC2 CPU/内存告警 + RDS 磁盘告警 + Lambda 错误告警,日志保留 7 天,SNS 邮件统一收通知——一套 0 成本的监控体系 30 分钟就能上线。等业务增长再按"标准版/企业版"升级,每一分钱都花在刀刃上。想进一步省钱,还可以配合预留实例和 Spot 实例降低算力成本(见 AWS EC2 选购教程),并定期用 AWS 账单管理 10 个设置 复盘账单。

⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。

🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多