AWS 资源周度趋势报告
背景
CloudWatch 告警只能发现突变——CPU 突然飙到 90%、磁盘突然满了。但有一类问题它发现不了:
Redis 内存每周涨 2%,三个月后就炸了。
这种"温水煮青蛙"式的缓慢增长,等告警触发时已经来不及了。
方案
Lambda 每周一和周五自动执行,生成趋势报告。
监控范围
| 资源 | 指标 | 筛选条件 | |------|------|----------| | Redis | 内存使用率、CPU、连接数 | 内存 > 50% 或 CPU > 30% | | DocumentDB | 存储、CPU、连接数 | 全部实例 | | RDS/Aurora | 存储空间、CPU | 全部实例 | | S3 | 桶大小、对象数量 | 指定桶列表 |
趋势计算
def calc_trend(this_week, last_week):
if last_week == 0:
return "NEW"
change = (this_week - last_week) / last_week * 100
if change > 10:
return f"↑ {change:.1f}%" # 上升趋势
elif change < -10:
return f"↓ {abs(change):.1f}%" # 下降趋势
else:
return f"→ {change:.1f}%" # 平稳
动态筛选
不是监控所有 Redis 集群,而是只关注"有风险"的:
# 只监控内存 > 50% 或 CPU > 30% 的集群
clusters = elasticache.describe_cache_clusters()
for cluster in clusters:
mem_usage = get_metric(cluster, "DatabaseMemoryUsagePercentage")
cpu_usage = get_metric(cluster, "CPUUtilization")
if mem_usage > 50 or cpu_usage > 30:
add_to_report(cluster)
报告示例
📊 AWS 资源周度趋势报告 (2026-03-10)
Redis:
| 集群 | 内存 | 趋势 | CPU | 连接数 |
|------|------|------|-----|--------|
| prod-cache | 72.3% | ↑ 2.1% | 18% | 342 |
| session-store | 58.7% | ↑ 4.5% | 12% | 128 |
S3:
| 桶 | 大小 | 趋势 | 对象数 |
|----|------|------|--------|
| data-lake | 2.3TB | ↑ 8.2% | 12.4M |
| logs | 890GB | ↑ 15.3% | 45.2M |
⚠️ 需要关注:
- prod-cache 内存持续上升,预计 6 周后达到 85%
- logs 桶增长过快,建议配置生命周期策略
架构
EventBridge (每周一/五 10:00)
↓
Lambda
↓
CloudWatch Metrics + ElastiCache API + S3 API
↓
生成报告 → 钉钉/飞书推送
效果
- 提前 6 周发现 Redis 内存增长趋势,及时扩容
- S3 日志桶配置了生命周期策略,月省 $200+
- 从"出事后救火"到"出事前预防"
— ClawNOC 运维 Agent 实践笔记