aws-doc/课程/第五阶段-监控与运维/第33天-CloudWatch监控.md
2026-05-08 10:24:39 +08:00

6.3 KiB
Raw Blame History

第33天CloudWatch——监控一切

今天你将学到什么

今天学习 CloudWatch——AWS 的监控核心服务。它收集指标、展示仪表板、设置告警、收集日志。是你了解系统运行状态的"眼睛"。


为什么需要监控

没有监控的世界

  • 用户打电话来:"你们网站打不开了!"——你才知道出了问题
  • 数据库磁盘满了,应用崩溃——事后才发现
  • 月底账单暴涨——不知道是哪个服务在烧钱
  • 应用变慢了——不知道是哪个环节的问题

有监控的世界

  • CPU 使用率超过 80%——自动告警,还没出问题就提前处理
  • 磁盘使用率达到 70%——自动扩容或清理
  • API 错误率突然上升——立刻通知开发团队
  • 响应时间变慢——精确定位到是数据库查询慢了

类比CloudWatch 就像汽车的仪表盘。没有仪表盘你也能开车,但你不知道油还剩多少、发动机温度是否正常、时速多少。有了仪表盘,一切尽在掌握。


CloudWatch 的四大功能

1. 指标Metrics——数字化的运行状态

指标是一个随时间变化的数值。AWS 服务自动发送指标到 CloudWatch。

常见指标举例

服务 指标 含义
EC2 CPUUtilization CPU 使用率
EC2 NetworkIn/Out 网络流入/流出字节数
RDS DatabaseConnections 数据库连接数
RDS FreeStorageSpace 剩余磁盘空间
ALB RequestCount 请求总数
ALB TargetResponseTime 后端响应时间
Lambda Invocations 调用次数
Lambda Errors 错误次数
Lambda Duration 执行时间
SQS ApproximateNumberOfMessages 队列中的消息数

自定义指标:你也可以发送自己的业务指标,比如"每分钟注册用户数"、"订单金额"等。

2. 告警Alarms——自动预警

当指标超过阈值时,自动触发动作。

告警的三种状态

  • OK一切正常
  • ALARM超过阈值触发告警
  • INSUFFICIENT_DATA数据不足无法判断

告警可以触发的动作

  • 发送通知SNS → 邮件/短信/Slack
  • 自动扩展Auto Scaling 加机器)
  • 执行 Lambda 函数(自动修复)
  • 停止/终止 EC2 实例

常见告警设置

告警 条件 动作
CPU 过高 CPU > 80% 持续 5 分钟 通知 + Auto Scaling 扩展
磁盘快满 剩余空间 < 20% 通知运维团队
错误率上升 5xx 错误 > 1% 持续 3 分钟 通知开发团队
响应变慢 P99 延迟 > 2 秒 通知 + 自动排查
账单异常 预估月费 > 预算 通知管理层

3. 日志Logs——详细的运行记录

CloudWatch Logs 集中收集和存储所有日志。

日志来源

  • EC2 实例的应用日志(需要安装 CloudWatch Agent
  • Lambda 函数的输出(自动发送)
  • ECS 容器的日志(配置日志驱动)
  • API Gateway 的访问日志
  • VPC Flow Logs

日志的组织结构

日志组Log Group/app/order-service
  └── 日志流Log Streaminstance-1/2024-01-15
        └── 日志事件:[2024-01-15 10:30:15] ERROR: Database connection timeout

Logs Insights:用类 SQL 语法查询日志。

比如查找最近 1 小时内所有错误:

fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 50

4. 仪表板Dashboards——可视化大屏

把多个指标和日志组合成一个可视化页面。

典型的运维仪表板包含

  • 请求量趋势图
  • 错误率曲线
  • 响应时间分布
  • CPU/内存使用率
  • 数据库连接数
  • 队列积压情况

一眼就能看出系统整体健康状况。


实际监控方案

一个 Web 应用的监控体系

第一层:基础设施监控
├── EC2CPU、内存、磁盘、网络
├── RDS连接数、查询延迟、磁盘空间
├── ElastiCache内存使用、命中率
└── ALB请求量、错误率、延迟

第二层:应用监控
├── API 响应时间P50、P95、P99
├── API 错误率4xx、5xx
├── 业务错误日志
└── 依赖服务调用延迟

第三层:业务监控
├── 每分钟注册用户数
├── 每分钟订单数
├── 支付成功率
└── 用户活跃度

告警分级

级别 条件 响应
P1 紧急 服务完全不可用 立刻通知所有人5 分钟内响应
P2 严重 部分功能受影响 通知值班人员30 分钟内响应
P3 警告 性能下降但可用 通知开发团队,当天处理
P4 信息 需要关注但不紧急 记录,下次迭代处理

CloudWatch Agent

默认情况下CloudWatch 只能看到 EC2 的 CPU、网络、磁盘 IO 等外部指标。要看内存使用率、磁盘空间等内部指标,需要安装 CloudWatch Agent。

CloudWatch Agent 能收集

  • 内存使用率(默认看不到!)
  • 磁盘空间使用率
  • 应用日志文件
  • 自定义指标

成本注意事项

功能 免费额度 超出后费用
基本指标 AWS 服务自带指标免费 -
自定义指标 前 10 个免费 $0.30/指标/月
告警 前 10 个免费 $0.10/告警/月
日志存储 5GB 免费 $0.50/GB/月
仪表板 前 3 个免费 $3/仪表板/月

建议:学习阶段用免费额度完全够用。生产环境注意日志量,设置日志保留期限(比如保留 30 天)。


今天的小测验

  1. CloudWatch 的四大功能分别是什么?
  2. 什么是 CloudWatch 告警?它可以触发哪些动作?
  3. 为什么需要安装 CloudWatch Agent它能收集什么默认看不到的指标
  4. 如何设计一个合理的告警分级体系?

延伸阅读


明天预告

明天学习成本管理——如何控制你的 AWS 账单。了解 AWS 的定价模型、省钱技巧,以及如何设置预算告警避免意外花费。